2011-11-09 15 views

risposta

33

Quando si utilizza un modello di visualizzazione o di Editor, UIHint lo dirà quale modello utilizzare:

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

Se si crea un modello di visualizzazione chiamato SomeTemplate.ascx (poiché siete MVC2) nei Visualizzazioni/comune/DisplayTemplates o viste/{controller}/DisplayTemplates allora userà tale modello quando si esegue:

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

o

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

modificare
Se si desidera specificare questo su un livello di proprietà:

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

È possibile creare un modello di visualizzazione/editore chiamato gli anni nei DisplayTemplates o cartella EditorTemplates in entrambi/Vista/concorrente o/Vista/{controller}. Poi, quando si fa:

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

o

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

Si userà il modello specificato nel UIHint

+0

Grazie per la risposta Great !! Ma come si può specificare a livello di proprietà .. ha bisogno di una rappresentazione più chiara per favore – user1030181

+1

Dang, è stato esattamente quello che ho passato un'ora cercando come fare. Perché rendono così difficile trovare questa proprietà? – neminem

+2

Non può essere utilizzato su un 'class', solo su proprietà e campi. – Mrchief

15

UIHint può essere utilizzato solo su una proprietà non su una dichiarazione di classe come Dismissile stati. Sto usando MVC3 quindi potrebbe essere cambiato da MVC2.

"Attributo 'UIHint' non è valido in questo tipo di dichiarazione. E 'valido solo su 'proprietà, indicizzatore, campo di' dichiarazioni"

Problemi correlati