Tipi di modelli a oggetti in MVC2 utilizzando il problema delle pagine di visualizzazione fortemente digitata

StackOverflow https://stackoverflow.com/questions/1532838

  •  20-09-2019
  •  | 
  •  

Domanda

Ho un nuovo progetto MVC2 convertito in esecuzione contro il codice sorgente MVC2. Ho fatto questa conversazione due volte sulla stessa soluzione.

Uso viste fortemente digitate su ogni pagina del sito e finora non ho avuto problemi in esecuzione contro la fonte né sviluppando con viste fortemente tipizzate.

Ora su una vista fortemente digitata in particolare il parametro generico non si riflette nella proprietà del modello di quella pagina.

Invece di avere un modello di tipo TI avere sempre un modello di tipo di tipo.

Il codice per la pagina non lavorativa:

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

Il modello di visualizzazione:

public class ThingViewModel
{
    public string Browser { get; set; }
}

Nessun indizio cosa sta succedendo qui.

Se aggiungo una nuova vista utilizzando la procedura guidata Aggiungi vista tutto funziona alla grande, ma questa pagina esistente ottengo sempre un oggetto per il mio tipo di modello di visualizzazione.

Posso aggirare questo, mi chiedo solo cosa sta succedendo qui?

Qualcosa è memorizzato nella cache dietro le quinte? Sono solo curioso di sapere cosa mi manca.

In questo caso il controller sta passando una nuova cosa di ThingingModel ().

È stato utile?

Soluzione

Dovresti prevalere sul parser con quello nuovo. Controlla il tuo file web.config all'interno della cartella Visualizza.

dovrebbe contenere

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

invece di

 <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>
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top