À l'aide d'un modèle générique dans ASP.NET MVC, Razor
Est-il possible d'utiliser un modèle générique dans ASP.NET MVC 3 (w/Rasoir)? Le suivant échoue avec une erreur de syntaxe:
@model DtoViewModel<T> where T : IDto
Vous devez vous connecter pour publier un commentaire.
Telle syntaxe n'est pas pris en charge par le Rasoir, désolé.
étant donné que @modèle s'attend à un type pas une déclaration de type de
vous pouvez utiliser:
et profiter du générique de covariance
En supposant que, vous souhaitez utiliser un type générique afin d'éviter les duplications de code dans chaque vue de
ViewModel<T>
vous pouvez le faire de cette façon:1. créer une vue pour les pièces de
ViewModel<T>
qui sont uniques à la vueModelView.cshtml:
2. créer une vue pour les parties communes, qui doit être affiché dans chaque vue de
<T>
De la grille.cshtml:
Puisque c'est une vue partielle, vous n'avez pas besoin de déclarer le type de
Model
de nouveau. Il utilisera simplement le modèle que vous avez définis dans la vue parent, qui la rend à la fois. La propriétéIList<T> PageItems
de votre modèle, restera fortement typé avec<specificType>
.3. N'oubliez pas de fait le rendu de la vue partielle de vos parties communes
ModelView.cshtml:
J'ai trouvé ce fil et fait un peu plus creuser. Ressemble à la fonctionnalité est sur la 2.2.0 carnet de commandes. Si quelqu'un veut s'impliquer, vous pouvez consulter la question sur Github. https://github.com/aspnet/Mvc/issues/7152
Ce n'est pas l'idéal, mais ça fonctionne et pourrait être assez créatif avec ce motif.