Types de modèles d'objets dans MVC2 en utilisant le problème des pages de vue fortement typées

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

  •  20-09-2019
  •  | 
  •  

Question

J'ai un nouveau projet MVC2 converti contre le code source MVC2. J'ai fait cette conversation deux fois sur la même solution.

J'utilise des vues fortement dactylographiées sur chaque page du site et jusqu'à présent, je n'ai eu aucun problème contre la source ni en développement avec des vues fortement dactylographiées.

Maintenant, sur une vue fortement tapée en particulier, le paramètre générique ne se reflète pas dans la propriété du modèle de cette page.

Au lieu d'avoir un modèle de type Ti, j'ai toujours un modèle d'objet de type.

Le code pour la page non-travail:

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

Le modèle de vue:

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

Aucun indice ce qui se passe ici.

Si j'ajoute une nouvelle vue en utilisant l'assistant Ajouter une vue, tout fonctionne très bien, mais cette page existante, j'obtiens toujours un objet pour mon type de modèle de vue.

Je peux contourner cela, vous vous demandez simplement ce qui se passe ici?

Quelque chose est mis en cache dans les coulisses? Juste curieux de savoir ce qui me manque.

Le contrôleur passe une nouvelle chose à faire en ce cas.

Était-ce utile?

La solution

Vous devez remplacer l'analyseur avec le nouveau. Vérifiez votre fichier web.config dans le dossier des vues.

il doit contenir

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

à la place 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>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top