Типы объектных моделей в MVC2 с использованием строго типизированной задачи просмотра страниц - PullRequest
2 голосов
/ 07 октября 2009

У меня новый преобразованный проект MVC2, работающий с исходным кодом MVC2. Я дважды говорил об одном и том же решении.

Я использую строго типизированные представления на каждой странице сайта, и до сих пор у меня не было проблем с исходным кодом или разработкой со строго типизированными представлениями.

Теперь в одном строго типизированном представлении, в частности, универсальный параметр не отражается в свойстве Model этой страницы.

Вместо того, чтобы иметь Модель типа T, у меня всегда есть Модель типа объекта.

Код для нерабочей страницы:

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

Понятия не имею, что здесь происходит.

Если я добавляю новый вид с помощью мастера добавления вида, все работает отлично, но на этой существующей странице я всегда получаю объект для моего типа модели вида.

Я могу обойти это, просто интересно, что здесь происходит?

Что-то кешируется за кулисами? Просто любопытно, чего мне не хватает.

В этом случае контроллер передает новый ThingVingModel ().

1 Ответ

5 голосов
/ 17 декабря 2009

Вы должны переопределить парсер новым. Проверьте файл web.config в папке Views.

должно содержать

<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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...