Ich habe eine KlasseWas ist eine einfache Erklärung für displayfor und displaynamefor in asp.net?
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 passiere ich eine Instanz dieses
public ActionResult Index()
{
var model = new Item
{
CategoryId = 1,
Name = "aaa",
Price = 2
};
return View("Index", model);
}
dann in Sicht zu sehen versuche ich Namen anzuzeigen
@model GenericShop.Models.Item
<p>
@Html.DisplayNameFor(m => m.Name)
</p>
mit und nutzen Sie die Folgefehler
Compiler-Fehlermeldung: CS1061: 'System.Web.Mvc.HtmlHelper' enthält keine eine Definition für 'DisplayNameFor' und keine Erweiterungsmethode 'DisplayNameFor' akzeptiert ein erstes Argument vom Typ 'System.Web.Mvc.HtmlHelper ' gefunden werden konnte (möglicherweise fehlt eine using-Direktive oder ein Assemblyverweis?)
@Html.DisplayFor(m => m.Name)
funktioniert gut, aber ich kann nicht nur sehen, warum
@Html.DisplayNameFor(m => m.Name)
nicht.
DisplayFor
zeigt den Wert für das Modell Element und DisplayNameFor
zeigt einfach den Namen der Eigenschaft?
In Ihrer Antwort, wo Sie gemeint haben, wenn Sie ... würden Sie DisplayNameFor in beiden Fällen verwenden und das ist verwirrend. – Minsk
Das erste Mal verwende ich @ Html.DisplayNameFor (m => m.Name), die mit der 8. Zeile im Codebeispiel verknüpft. Wenn Sie sich Zeile 5 ansehen, sehen Sie [display (name = "aktueller Name")] dies wird dazu führen, dass das HTML "aktuellen Namen" rendert In der @ Html.DisplayNameFor (m => m.Price) verlinke ich auf die Zeile public decimal Preis {get; einstellen; } Diese Eigenschaft hat keine [Anzeige ...] darüber, so asp.net mvc rendert nur den Namen der Propery (die Preis ist) Ist das klarer? – RoteS
ja, ja. Also nimmt 'DisplayNameFor (model => model.Field1)' die Anzeige (name = "abcd") und druckt abcd. Wenn kein Anzeigename vorhanden ist, verwendet er stattdessen den Namen der Eigenschaft. – Minsk