Espero que esto sea bastante simple, aunque después de mucha búsqueda en Google, no he podido resolverlo.En MVC 3, no puedo obtener @ Html.DisplayFor para representar una cadena formateada
Estoy trabajando en un sitio de carrito de compras con MVC 3 y utilizando Entity Framework con código primero. El modelo que estoy enviando más de una lista de objetos de producto, y cada uno de esos objetos incluye esta propiedad:
[Required(ErrorMessage = "This is a required field.")]
[DataType(DataType.Currency)]
[Range(1.00, 500.00, ErrorMessage = "Products can not be free.")]
[DisplayFormat(DataFormatString = "{0:C}")]
[DisplayName("Price")]
public double Price { get; set; }
Tenía la esperanza de que el atributo formatSalida causaría la siguiente línea en la vista para dar formato al valor una moneda (artículo es el producto objeto en el bucle):
@Html.DisplayFor(modelItem => item.Price)
Pero esto no aplica el formato en absoluto. Hasta ahora, la única forma que he sido capaz de conseguir que funcione es utilizar esto en su lugar:
@String.Format("{0:C}", item.Price)
Pero si es posible, prefiero usar @ Html.DisplayFor, ya que está diseñado para manejar cosas como los nulos . Sé que va a ser 0 o más. De hecho, con la validación siempre habrá una cierta cantidad, pero quiero asegurarme de que no haya una manera más correcta de hacerlo antes de continuar.
¡Cualquier información sobre esto sería muy apreciada!
ACTUALIZACIÓN
Darin respondió y señaló que lo hace el trabajo, lo que me hizo ir hacia atrás sobre lo que era en realidad el envío de más a la vista. Me di cuenta de que, aunque tengo una clase llamada ProductModel, que tiene el atributo DisplayFormat, en realidad estaba devolviendo otro modelo que contiene una lista de productos. Esto se llama ProductListModel y me di cuenta de que devolvía una lista de la clase de datos del producto, ¡no la clase ProductModel!
Así que, al final, en realidad fue muy simple. Solo desearía no haber perdido media noche en eso. Gracias por inspirarme a volver atrás y verificar correctamente, Darin!
Tienes razón, Darin. ¡Era tarde en el día y estaba cometiendo el estúpido error de pensar que estaba mostrando una cosa cuando en realidad estaba mostrando otra! Actualizaré mi publicación. ¡Gracias por probar que sí funciona! –
simplemente '[DataType (DataType.Currency)]' es suficiente. ni siquiera necesita el DisplayFormat –