2011-11-09 3 views
20

Qu'est-ce que l'utilisation de l'attribut UIHint dans MVC. Quelqu'un peut-il s'il vous plaît me fournir un exemple simple de comment l'utiliser et ce qu'il fait.Attribut UIHint dans MVC

Répondre

33

Lorsque vous utilisez un modèle d'affichage ou de l'éditeur, UIHint le dira quel modèle utiliser:

[UIHint("SomeTemplate")] 
public class MyViewModel 
{ 
    public string SomeProperty { get; set; } 
} 

Si vous créez un modèle d'affichage appelé SomeTemplate.ascx (puisque vous êtes MVC2) dans les vues/Partagé/DisplayTemplates ou vues/{Controller}/DisplayTemplates il utilisera ce modèle lorsque vous faites:

@Html.DisplayForModel() // if Model is MyViewModel 

ou

@Html.DisplayFor(m => m.ModelProperty) // if ModelProperty is of type MyViewModel 

modifier
Si vous souhaitez spécifier un niveau de la propriété:

public class MyViewModel 
{ 
    [UIHint("Birthday")] 
    public DateTime DateOfBirth { get; set; } 
} 

Vous pouvez créer un modèle d'affichage/éditeur appelé anniversaire dans les DisplayTemplates ou le dossier EditorTemplates soit dans/Vues/Shared ou/Vues /{Manette}. Puis, quand vous faites:

@Html.DisplayFor(m => m.DateOfBirth) 

ou

@Html.EditorFor(m => m.DateOfBirth) 

Il utilisera le modèle spécifié dans UIHint

+0

Merci pour la réponse Great !! Mais comment t spécifier sur le niveau de la propriété .. besoin de représentation plus claire s'il vous plaît – user1030181

+1

Dang, c'est exactement ce que j'ai passé une heure à chercher comment faire. Pourquoi rendent-ils si difficile de trouver cette propriété? – neminem

+2

Ne peut pas être utilisé sur une 'classe', seulement sur les propriétés et les champs. – Mrchief

15

UIHint ne peut être utilisé sur une propriété non sur une déclaration de classe comme les États Dismissile. J'utilise MVC3 donc cela peut avoir changé de MVC2.

« L'attribut « UIHint » est pas valable sur ce type de déclaration. Il est uniquement valable sur la « propriété, indexeur, champ » déclarations »

Questions connexes