Objektmodelltypen in MVC2 unter Verwendung stark typisierter Ansichtsseitenprobleme
-
20-09-2019 - |
Frage
Ich habe ein neues konvertiertes MVC2 -Projekt, das gegen den MVC2 -Quellcode ausgeführt wird. Ich habe dieses Gespräch zweimal auf derselben Lösung geführt.
Ich verwende auf jeder Seite der Site stark getippte Ansichten und hatte bisher keine Probleme, die gegen die Quelle lief, noch mit stark typisierten Ansichten zu entwickeln.
In einer stark typisierten Ansicht wird der generische Parameter nicht in der Modelleigenschaft dieser Seite widerspiegelt.
Anstatt ein Modell vom Typ Ti zu haben, haben Sie immer ein Modell des Typs.
Der Code für die nicht arbeitende Seite:
<%@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">
Das Ansichtsmodell:
public class ThingViewModel
{
public string Browser { get; set; }
}
Keine Ahnung, was hier los ist.
Wenn ich eine neue Ansicht mit dem Assistenten hinzufügen füge, funktioniert alles großartig, aber diese vorhandene Seite erhalte ich immer ein Objekt für meinen Ansichtsmodelltyp.
Ich kann das umgehen und mich nur frage, was hier passiert?
Ist etwas hinter den Kulissen zwischengespeichert? Nur neugierig, was ich vermisse.
Der Controller gibt in diesem Fall eine neue DingModel ().
Lösung
Sie sollten den Parser mit dem neuen überschreiben. Überprüfen Sie Ihre Web.config -Datei im Ordner Ansicht.
es sollte enthalten
<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>
Anstatt von
<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>