asp.net中displayfor和displaynamefor的简单解释是什么?

Min*_*nsk 12 c# asp.net asp.net-mvc asp.net-mvc-4

我上课了

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; }
}
Run Code Online (Sandbox Code Playgroud)

在我的控制器中,我传递了一个这样的实例来查看

public ActionResult Index()
    {
        var model = new Item
        {
            CategoryId = 1,
            Name = "aaa",
            Price = 2
        };

        return View("Index", model);            
    }
Run Code Online (Sandbox Code Playgroud)

然后在视图中我尝试使用显示名称

@model GenericShop.Models.Item

<p>                               
 @Html.DisplayNameFor(m => m.Name)                                       
</p>
Run Code Online (Sandbox Code Playgroud)

并得到以下错误

编译器错误消息:CS1061:'System.Web.Mvc.HtmlHelper'不包含'DisplayNameFor'的定义,并且没有扩展方法'DisplayNameFor'接受类型'System.Web.Mvc.HtmlHelper'的第一个参数可以找到(你错过了using指令或程序集引用吗?)

@Html.DisplayFor(m => m.Name) 工作正常,但我不明白为什么

@Html.DisplayNameFor(m => m.Name) 才不是.

DisplayFor显示模型项的值,DisplayNameFor只显示属性的名称?

Rot*_*teS 25

差不多了.:)

DisplayNameFor显示属性的名称或属性的display属性中定义的字符串.

public class Item
{
    public int ItemId { get; set; }

    [Display(Name = "Current name")]
    [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; }

}
Run Code Online (Sandbox Code Playgroud)

然后@Html.DisplayNameFor(m => m.Name)会显示"当前名称".

@Html.DisplayNameFor(m => m.Price) 只会显示价格.

请注意,您还可以像这样本地化display属性:

[Display(ResourceType = typeof(MyResources), Name = "Name")]
public string Name{ get; set; }
Run Code Online (Sandbox Code Playgroud)

这反过来将在MyResources resc文件中查找.(如果设置正确).

Html.DisplayFor显示字段的值.

  • 是的是的.所以`DisplayNameFor(model => model.Field1)`接受Display(name ="abcd")并打印abcd.如果没有显示名称,他将使用属性名称. (3认同)
  • 谢谢,现在很清楚。并且DisplayFor显示模型项属性的实际值? (2认同)