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.

Foi útil?

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>
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top