2010-01-08 6 views
4

Je sais que cela fonctionne pour les propriétés individuelles comme par Scott Guthrie's blog à auto-magie utiliser une vue partielle de rendre un modèle partiel qui lui est passé (interface utilisateur Helper comme des données dynamiques):Dans MVC 2, comment annoter une classe pour un modèle d'aide d'interface utilisateur (pas une propriété)?

[UIHint("StateDropDown")] 
public string State { get; set;} 

Mais comment voulez-vous annote un classe entière d'utiliser une aide de l'interface utilisateur comme ceci:.

[UIHint("Address")] 
public class Address { 
    public string addr1 { get; set; } 
    public string addr2 { get; set; } 
    public string city { get; set; } 
    [UIHint("StateDropDown")] 
    public string state { get; set; } 
    public string zip { get; set; } 
} 

(Sauf [UIHint (« Adresse »)] ne semble pas fonctionner sur les classes que je vois dans ses exemples, il a « Customer.aspx » dans le dossier Shared-> EditorTemplates, donc je suppose que c'est possible

+0

Il semble presque que EditorFor (m => m.Address) utilisera Address.ascx dans le dossier "EditorTemplates" s'il existe par défaut? Il y a un dossier "DisplayFor" qui fait probablement la même chose pour DisplayFor (m => m.Address) dans le dossier "DisplayTemplates". Je vois que vous pouvez mettre un "Object.ascx" pour fournir une vue partielle de rendu par défaut trop ... Je dois aimer les messages de Scott Guthrie. –

Répondre

3

Créez un modèle avec le nom de la classe, et cela fonctionne.

+0

Super! J'ai vu un Html.EditorForModel ("nameOfViewTemplate") aussi. Je suppose que le modèle de vue peut décider quels champs afficher, et que MVC remplira les champs qu'il peut (s'il manque des champs de modèle dans la vue). Puisque nous ne voulons pas plus d'un BeginForm(), je suppose que si vous avez plusieurs entités dans le même formulaire, vous ne mettriez pas le BeginForm dans les modèles de vue (pages partielles)? –

+0

Ce serait vraiment bien si nous pouvions le faire: Html.EditorForModel ("Adresse", Model.appEmployee.empAddress) –

+2

Html.EditorFor (model => model.appEmployee.empAddress, "Adresse") –

Questions connexes