asp.net?

时间:2016-02-13 20:31:58

标签: 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; }
}

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

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只显示属性的名称?

1 个答案:

答案 0 :(得分:20)

几乎就在那里。 :)

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)只会显示Price。

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

[Display(ResourceType = typeof(MyResources), Name = "Name")]
public string Name{ get; set; }

反过来会查看MyResources resc文件。 (如果设置正确完成)。

Html.DisplayFor显示字段的值。