¿Cuál es una explicación simple para displayfor y displaynamefor en asp.net?
Tengo una clase
public class Item
{
public int ItemId { get; set; }
[Required(ErrorMessage = "Category is required")]
[Range(1, int.MaxValue, ErrorMessage = "Category is required")]
public int CategoryId { get; set; }
[Display(Name = "Current password")]
[Required(ErrorMessage = "Name is required")]
[StringLength(160)]
public string Name { get; set; }
[Required(ErrorMessage = "Price is required")]
[Range(0.01, 100.00,
ErrorMessage = "Price must be between 0.01 and 100.00")]
public decimal Price { get; set; }
public virtual Category Category { get; set; }
}
En mi controlador, paso una instancia de esto para ver
public ActionResult Index()
{
var model = new Item
{
CategoryId = 1,
Name = "aaa",
Price = 2
};
return View("Index", model);
}
entonces a la vista trato de mostrar el nombre usando
@model GenericShop.Models.Item
<p>
@Html.DisplayNameFor(m => m.Name)
</p>
y obtiene el siguiente error
Mensaje de error del compilador: CS1061: 'System.Web.Mvc.HtmlHelper' no contiene una definición para 'DisplayNameFor' y no se puede encontrar ningún método de extensión 'DisplayNameFor' que acepte un primer argumento de tipo 'System.Web.Mvc.HtmlHelper' ( ¿Le falta una directiva de uso o una referencia de ensamblaje?)
@Html.DisplayFor(m => m.Name)
funciona bien, pero no puedo ver por qué
@Html.DisplayNameFor(m => m.Name)
no.
DisplayFor
muestra el valor para el artículo modelo yDisplayNameFor
simplemente muestra el nombre de la propiedad?