2010-09-22 13 views
15

He estado usando MVC2 desde hace un tiempo, y cuando tengo que configurar la plantilla que uso el Tipo de datos atributoTipo de datos vs UIHint

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

veo a otros usando UIHint para lograr los mismos resultados

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

¿Cuál es la diferencia entre el uso de estos dos atributos? ¿Qué atributo debería usar normalmente, o son para tareas diferentes?

Respuesta

22

DataType generalmente se usa para dar a conocer que esta es una versión muy específica de una propiedad, como el precio.

El ejemplo más común de DataType es el [DataType(DataTypes.EmailAddress)] que generalmente es una cadena, pero estamos diciendo que este es un tipo de cadena muy específico.

Ambos son útiles y el UIHint reemplaza el tipo de datos. Entonces, si tiene un cierto tipo de datos pero desea anular el editor para esa propiedad específica, puede usar un UIHint.

1

atributo Tipo de datos tiene dos propósitos

  • Proporcionar información de tipo adicional para un campo de datos. Para ello, aplique el atributo DataTypeAttribute a un campo de datos en el modelo de datos y especificando el nombre de tipo adicional de la enumeración DataType. A continuación, el motor de vista utiliza la plantilla predeterminada para mostrar la propiedad, como, una casilla de verificación para un booleano.
  • Si desea sobrescribir la plantilla predeterminada y desea utilizar una plantilla personalizada, puede utilizarse para asociar una plantilla de campo personalizada con ese campo de datos. En este caso, debe proporcionar una página parcial [.cshtml, MVC 4] para describir la pantalla.
  • El propósito de UIHint es exactamente el mismo que el segundo punto anterior. ¿Dónde usar qué? La respuesta es: contexto, es decir, lo que tendrá más sentido, lo que está más cerca del problema físico que su código está tratando de resolver. ¿Qué pasa si ambos se aplican a la misma propiedad? La respuesta es: UIHint tiene prioridad, obviamente. Pero, ¿por qué aplicarías ambos?

    Cuestiones relacionadas