Tipos de modelo de objeto no MVC2 usando páginas de vista fortemente digitado
-
20-09-2019 - |
Pergunta
Eu tenho um novo projeto MVC2 convertido em execução no código -fonte MVC2. Eu fiz essa conversa duas vezes na mesma solução.
Eu uso visualizações fortemente digitadas em todas as páginas do site e até agora não tive nenhum problema em execução contra a fonte nem desenvolvendo com visualizações fortemente digitadas.
Agora, em uma visão fortemente digitada, em particular, o parâmetro genérico não está sendo refletido na propriedade do modelo dessa página.
Em vez de ter um modelo do tipo Ti, sempre possui um modelo de objeto de tipo.
O código para a página que não trabalha:
<%@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">
O modelo de vista:
public class ThingViewModel
{
public string Browser { get; set; }
}
Sem idéia o que está acontecendo aqui.
Se eu adicionar uma nova visualização usando o assistente Adicionar View, tudo funcionará muito bem, mas nesta página existente, sempre recebo um objeto para o meu tipo de modelo de exibição.
Eu posso contornar isso, apenas me perguntando o que está acontecendo aqui?
É algo em cache nos bastidores? Apenas curioso o que estou perdendo.
O controlador está passando por uma nova coisa de coisa () neste caso.
Solução
Você deve substituir o analisador pelo novo. Verifique seu arquivo web.config dentro da pasta Views.
deve conter
<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>
ao invés de
<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>