У меня есть классЧто такое простое объяснение displayfor и displaynamefor в 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; }
}
В моем контроллере я передать экземпляр этого для просмотра
public ActionResult Index()
{
var model = new Item
{
CategoryId = 1,
Name = "aaa",
Price = 2
};
return View("Index", model);
}
то в виде я пытаюсь отобразить имя с помощью
@model GenericShop.Models.Item
<p>
@Html.DisplayNameFor(m => m.Name)
</p>
и получить следующая погрешность
Сообщение об ошибке компилятора: CS1061: «System.Web.Mvc.HtmlHelper» не содержит определение «DisplayNameFor» и метод расширения «DisplayNameFor» принимает первый аргумент типа «System.Web.Mvc.HtmlHelper 'можно найти (вы пропали без вести с помощью директивы или ссылка на сборку?)
@Html.DisplayFor(m => m.Name)
работает отлично, но я просто не могу понять, почему
@Html.DisplayNameFor(m => m.Name)
нет.
DisplayFor
отображает значение для элемента модели, а DisplayNameFor
просто отображает название объекта?
В вашем ответе, где вы имели в виду, если бы вы ... В обоих случаях вы используете DisplayNameFor, и это путает. – Minsk
В первый раз я использую @ Html.DisplayNameFor (m => m.Name), который ссылается на восьмую строку в примере кода. Если вы посмотрите на строку 5, вы увидите [display (name = «текущее имя»)], это заставит html отобразить «текущее имя» В @ Html.DisplayNameFor (m => m.Price) Я ссылаюсь на line public decimal Цена {get; задавать; } это свойство не имеет [display ...] над ним, поэтому asp.net mvc отображает только имя свойства (которое является Price) Является ли это более ясным? – RoteS
да, да. Таким образом, 'DisplayNameFor (model => model.Field1)' принимает Дисплей (name = "abcd") и печатает abcd. Если нет отображаемого имени, он вместо этого будет использовать имя свойства. – Minsk