views:

1114

answers:

2

I'm trying to create a strongly typed partial view

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master"     Inherits="System.Web.Mvc.ViewPage<IEnumerable<Pt.Data.Services>>" %>
<table>
<% foreach (Pt.Data.Services item in Model)
 { Html.RenderPartial("ServiceItem",item); } %>
</table>

in Controller

IEnumerable<Services> Model=null;
using (tl ctx = new tl(Config.ConnectionString))
{
    Model = ctx.Services.ToList();
}
return View("List",Model);

This working well when running at project with binary assembly System.Web.Mvc referenced. But if remove binary assembly and add project with mvc sources(!) to make some debug, it stops recognizing strongly typed views.

It's working like a ViewPage instead of ViewPage<TModel>

As result getting error:

Compiler Error Message: CS1579: foreach statement cannot operate on variables of type 'object' because 'object' does not contain a public definition for 'GetEnumerator'

and others the same nature.

My question:
- Why running sources of MVC is breaking down that is working with assembly referenced ? - How to make sources to run correct?

A: 

I don't know of a reason that might cause a referenced source project to behave differently than its own build output(assembly). Still I can recommend:
1- Make sure the source you're using is the same the assembly was built off.
2- Make sure you added a reference to the source project.
3- RC on your solution file, choose clean solution, then rebuild and try again.

Galilyou
no positive result.I guess maybe the reason is in compilation of MVC.Compiled sources in release mode has a size of 179 712 bytesBut binary assembly from MVC release has a size of 186 176 bytesLooks like some of generic classes are not compiled or something like that.
bug0r
A: 

Have you changed this line in ~/Views/Web.config:

<pages validateRequest="false"
       pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter,
                             System.Web.Mvc, Version=1.0.0.0, Culture=neutral,
                             PublicKeyToken=31BF3856AD364E35"
       pageBaseType="System.Web.Mvc.ViewPage, System.Web.Mvc, Version=1.0.0.0,
                     Culture=neutral, PublicKeyToken=31BF3856AD364E35"
       userControlBaseType="System.Web.Mvc.ViewUserControl,
                            System.Web.Mvc, Version=1.0.0.0, Culture=neutral,
                            PublicKeyToken=31BF3856AD364E35">

to this?:

<pages validateRequest="false"
       pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter,
                             System.Web.Mvc, Version=1.0.0.0, Culture=neutral,
                             PublicKeyToken=NULL"
       pageBaseType="System.Web.Mvc.ViewPage, System.Web.Mvc, Version=1.0.0.0,
                     Culture=neutral, PublicKeyToken=NULL"
       userControlBaseType="System.Web.Mvc.ViewUserControl,
                            System.Web.Mvc, Version=1.0.0.0, Culture=neutral,
                            PublicKeyToken=NULL">

Actually this Steve Sanderson's post might be helpful

eu-ge-ne
No, I didn't set PublicKeyToken to NULL.Really, it can help.I will try now.
bug0r
Yes, this way is working.Thank you, eu-ge-ne.
bug0r
This has not worked for me. I was not able to find the View anymore
Julien Nephtali