我有一个类

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; }
}

在我的 Controller 中,我传递了一个实例来查看
public ActionResult Index()
    {
        var model = new Item
        {
            CategoryId = 1,
            Name = "aaa",
            Price = 2
        };

        return View("Index", model);
    }

然后在 View 中我尝试使用显示名称
@model GenericShop.Models.Item

<p>
 @Html.DisplayNameFor(m => m.Name)
</p>

并得到以下错误


@Html.DisplayFor(m => m.Name)工作正常,但我看不出为什么
@Html.DisplayNameFor(m => m.Name)没有。
DisplayFor显示模型项的值,而DisplayNameFor仅显示属性的名称?

最佳答案

差不多了。 :)

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; }

}

然后@Html.DisplayNameFor(m => m.Name)将显示“当前名称”。
@Html.DisplayNameFor(m => m.Price)只会显示价格。

请注意,您还可以像这样本地化显示属性:
[Display(ResourceType = typeof(MyResources), Name = "Name")]
public string Name{ get; set; }

依次将在MyResources resc文件中查找。 (如果安装正确完成)。

Html.DisplayFor显示字段的值。

关于c# - 在asp.net中,displayfor和displaynamefor的简单解释是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35384987/

10-10 15:06