Was ist eine einfache Erklärung für displayfor und displaynamefor in asp.net
Ich habe ein klass
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; }
}
In meinem Controller übergebe ich eine Instanz davon an view
public ActionResult Index()
{
var model = new Item
{
CategoryId = 1,
Name = "aaa",
Price = 2
};
return View("Index", model);
}
dann versuche ich in der Ansicht, den Namen mit @ anzuzeig
@model GenericShop.Models.Item
<p>
@Html.DisplayNameFor(m => m.Name)
</p>
und erhalten den folgenden Fehler
Compiler-Fehlermeldung: CS1061: "System.Web.Mvc.HtmlHelper" enthält keine Definition für "DisplayNameFor" und es wurde keine Erweiterungsmethode "DisplayNameFor" gefunden, die ein erstes Argument des Typs "System.Web.Mvc.HtmlHelper" akzeptiert (Fehlt Ihnen eine using-Direktive oder eine Assembly-Referenz?)
@Html.DisplayFor(m => m.Name)
funktioniert gut, aber ich kann nicht sehen, warum
@Html.DisplayNameFor(m => m.Name)
nicht
DisplayFor
zeigt den Wert für das Modellelement und @ DisplayNameFor
zeigt einfach den Namen der Eigenschaft an?