2010-09-22 14 views
15

Ich habe jetzt für eine Weile MVC2 benutzen, und wenn ich die Vorlage i verwende festlegen müssen, um den Datentyp AttributDatentyp vs UIHint

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

Ich sehe andere UIHint mit den gleichen Ergebnisse zu erzielen

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

Was ist der Unterschied dieser beiden Attribute zwischen der Verwendung? Welches Attribut sollte ich normalerweise verwenden oder für verschiedene Aufgaben?

Antwort

22

DataType wird im Allgemeinen verwendet, um bekannt zu machen, dass dies eine sehr spezifische Version einer Eigenschaft ist, wie beispielsweise der Preis.

Das häufigste Beispiel für DataType ist die [DataType(DataTypes.EmailAddress)], die normalerweise eine Zeichenfolge ist, aber wir sagen, dass dies eine sehr spezifische Art von Zeichenfolge ist.

Sie sind beide hilfreich und die UIHint überschreibt den DataType. Wenn Sie also einen bestimmten Datentyp haben, aber den Editor für diese spezifische Eigenschaft überschreiben möchten, können Sie einen UIHint verwenden.

1

Datatype-Attribut hat zwei Zwecke

  • zusätzliche Typinformationen für ein Datenfeld vorsehen. Dazu müssen Sie das DataTypeAttribute-Attribut auf ein Datenfeld im Datenmodell anwenden und den zusätzlichen Typnamen aus der DataType-Enumeration angeben. Dann verwendet die Ansichts-Engine die Standardvorlage zum Anzeigen der Eigenschaft, z. B. ein Kontrollkästchen für einen booleschen Wert.
  • Wenn Sie die Standardvorlage überschreiben und eine benutzerdefinierte Vorlage verwenden möchten, kann sie verwendet werden, um eine benutzerdefinierte Feldvorlage mit diesem Datenfeld zu verknüpfen. In diesem Fall müssen Sie eine Teilseite [.cshtml, MVC 4] angeben, um die Anzeige zu beschreiben.
  • Der Zweck von UIHint ist genau dasselbe wie der zweite Punkt oben. Wo kann was verwendet werden? Die Antwort ist: Kontext, dh, was macht mehr Sinn, was näher an dem physikalischen Problem ist, das dein Code zu lösen versucht. Was passiert, wenn beide auf dieselbe Eigenschaft angewendet werden? Die Antwort lautet: UIHint hat offensichtlich Vorrang. Aber warum würdest du beides anwenden?