Типы объектов в MVC2 с использованием сильно напечатанных страниц просмотра.
-
20-09-2019 - |
Вопрос
У меня есть новый конвертированный проект MVC2, работающий против исходного кода MVC2. Я провел этот разговор дважды на одном и том же решении.
Я использую крепко напечатанные представления на каждой странице сайта, и до сих пор у меня не было никаких проблем, работающих против источника, ни разрабатываю с сильно напечатанными представлениями.
Теперь в одном сильно напечатанном представлении, в частности, общий параметр не отражается в свойстве модели этой страницы.
Вместо того, чтобы иметь модель типа Ti, всегда имеет модель объекта типа.
Код для неработающей страницы:
<%@Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<ThingViewModel>" %>
<%@ Import Namespace="SProject.Web"%>
<asp:Content ID="Content1" ContentPlaceHolderID="PageTitleContentPlaceHolder" runat="server">
<h2>Add Encounter <%= ViewData.Model.Browser %></h2>
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="SidebarContentPlaceHolder" runat="server">
Модель представления:
public class ThingViewModel
{
public string Browser { get; set; }
}
Нет, не подскажите, что здесь происходит.
Если я добавлю новый представление, используя мастер Add View, все работает отлично, но на этой существующей странице я всегда получаю объект для моего типа модели представления.
Я могу обойти это, просто интересно, что здесь происходит?
Что -то кэшируется за кулисами? Просто любопытно, чего мне не хватает.
Контроллер передает новую Thingingmodel () в этом случае.
Решение
Вы должны переопределить анализатор новым. Проверьте свой файл web.config в папке представлений.
это должно содержать
<pages
validateRequest="false"
pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter, System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
pageBaseType="System.Web.Mvc.ViewPage, System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
userControlBaseType="System.Web.Mvc.ViewUserControl, System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
<controls>
<add assembly="System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" namespace="System.Web.Mvc" tagPrefix="mvc" />
</controls>
</pages>
вместо
<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">
<controls>
<add assembly="System.Web.Mvc, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" namespace="System.Web.Mvc" tagPrefix="mvc" />
</controls>
</pages>