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 ().

War es hilfreich?

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>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top