2010-09-22 10 views
15

ho utilizzato MVC2 per un po ', e quando ho bisogno di impostare il modello di uso il tipo di dati attributoDataType vs UiHint

[DataType("DropDown")] 
    public int Field { get; set; } 

vedo gli altri usando UiHint per ottenere gli stessi risultati

[UiHint("DropDown")] 
    public int Field { get; set; } 

Qual è la differenza tra l'utilizzo di questi due attributi? Quale attributo dovrei usare normalmente o sono per compiti diversi?

risposta

22

DataType viene generalmente utilizzato per indicare che si tratta di una versione molto specifica di una proprietà, ad esempio il prezzo.

L'esempio più comune di DataType è lo [DataType(DataTypes.EmailAddress)] che di solito è una stringa ma stiamo dicendo che si tratta di un tipo di stringa molto specifico.

Sono entrambi utili e UIHint sostituisce il DataType. Quindi se hai un determinato DataType ma vuoi sostituire l'editor per quella specifica proprietà puoi usare un UIHint.

1

attributo DataType ha due scopi

  • forniscono informazioni tipo supplementare per un campo dati. A tale scopo, applicare l'attributo DataTypeAttribute a un campo dati nel modello dati e specificando il nome del tipo aggiuntivo dall'enumerazione DataType. Quindi il motore di visualizzazione utilizza il modello predefinito per visualizzare la proprietà, ad esempio una casella di controllo per un valore booleano.
  • Se si desidera eseguire l'override del modello predefinito e si desidera utilizzare un modello personalizzato, è possibile utilizzarlo per associare un modello di campo personalizzato a tale campo dati. In questo caso è necessario fornire una pagina parziale [.cshtml, MVC 4] per descrivere il display.
  • Lo scopo di UIHint è esattamente lo stesso del secondo punto in alto. Dove usare cosa? La risposta è: contesto, cioè, ciò che avrà più senso, ciò che è più vicino al problema fisico che il tuo codice sta tentando di risolvere. Cosa succede se entrambi vengono applicati alla stessa proprietà? La risposta è: UIHint ha la precedenza, ovviamente. Ma perché dovresti applicare entrambi?

    Problemi correlati