我有一个类asp.net中displayfor和displayname的简单解释是什么?
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 “可以发现 (是否缺少using指令或程序集引用?)
@Html.DisplayFor(m => m.Name)
工作正常,但我只是不能明白为什么
@Html.DisplayNameFor(m => m.Name)
没有。
DisplayFor
显示模型项目的值,DisplayNameFor
只显示属性的名称?
在你的答案中,你的意思是,如果你愿意...你在这两种情况下使用DisplayNameFor,这是令人困惑的。 – Minsk
我第一次使用@ Html.DisplayNameFor(m => m.Name)链接到代码示例中的第8行。如果你看第5行你会看到[display(name =“current name”)]这将导致html呈现“当前名称” 在@ Html.DisplayNameFor(m => m.Price)中,我链接到line public decimal Price {get;组; }这个属性在它上面没有[display ...],所以asp.net mvc只显示propery的名字(这是Price)这个更清楚了吗? – RoteS
是的,是的。因此,'DisplayNameFor(model => model.Field1)'显示(名称=“abcd”)并打印abcd。如果没有显示名称,他将改为使用属性名称。 – Minsk