Сильно типизированное различие во взглядах (исходники MVC и сборка) - PullRequest
1 голос
/ 21 мая 2009

Я пытаюсь создать строго типизированное частичное представление

<%@ 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>

в контроллере:

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

Это хорошо работало при запуске в проекте с бинарной сборкой System.Web.Mvc, на которую ссылаются.

Но если я удаляю двоичную сборку и добавляю проект с исходниками MVC для отладки, он перестает распознавать строго типизированные представления.

Он работает как ViewPage вместо ViewPage<TModel>

В результате я получаю сообщение об ошибке:

Сообщение об ошибке компилятора: CS1579: оператор foreach не может работать с переменными типа «объект», поскольку «объект» не содержит общедоступного определения для «GetEnumerator »`

Почему это работает с скомпилированным MVC, а не с исходниками? И как мне сделать так, чтобы исходники работали правильно?

Ответы [ 2 ]

4 голосов
/ 21 мая 2009

Вы изменили эту строку в ~ / 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">

к этому?:

<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">

На самом деле сообщение Стива Сандерсона может быть полезным

0 голосов
/ 21 мая 2009

Я не знаю причину, которая может привести к тому, что ссылочный исходный проект будет вести себя не так, как его собственный вывод сборки (сборка). Тем не менее я могу порекомендовать:
1. Убедитесь, что используемый вами источник совпадает с исходной сборкой.
2- Убедитесь, что вы добавили ссылку на исходный проект.
3- RC в вашем файле решения, выберите чистый раствор, затем пересоберите и попробуйте снова.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...