2010-11-09 3 views
5

En MVC2 nous avons une classe de base personnaliséePouvez-vous créer une vue rasoir sur mesure baseclass qui a un modèle et un presentationmodel

public class OurViewPage<TModel,TPresentationModel> : ViewPage<TModel> 

que nous avons dans la vue d'une propriété de modèle et une propriété PresentationModel ...

fichier Notre Aspx commence par

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Our.Master" 
Inherits="OurViewPage<IndexModel,IndexPresentationModel>" %> 

avec le moteur de vue Razor MVC3, serait quelque chose d'équivalent possible?

  • de quelle classe de base devrions-nous hériter.
  • Comment spécifiez-vous dans la vue les classes utilisées par une vue (équivalent de la directive Page)?

Répondre

3

Votre classe doit dériver de System.Web.Mvc.WebViewPage<TModel>

Dans votre fichier de vue, vous devez ajouter la ligne suivante au sommet:

@inherits OurWebViewPage<IndexModel, IndexPresentationModel> 

Notez que vous ne devriez pas utiliser la syntaxe @model si vous avez un classe de base avec deux paramètres génériques.

+0

Quelle syntaxe doivent-ils utiliser? – Zote

+1

@Zote vous devriez utiliser la syntaxe @inherits indiquée dans ma réponse – marcind

+0

J'ai des problèmes pour ajouter des espaces de noms personnalisés à toutes mes vues. J'ai vu des exemples utilisant la section <system.web.webPages.razor>, mais ils ne semblent pas fonctionner pour moi. Je veux que tous mes modèles et aides HTML personnalisés soient connus dans toutes les vues, mais je continue à recevoir des erreurs qui ne sont pas connues et je devrais ajouter une référence. Mais je ne veux pas ajouter d'instructions @using à toutes mes vues ... – rekna

Questions connexes