LabelFor显示属性名称而不是Display属性

时间:2016-06-02 05:51:43

标签: asp.net-mvc asp.net-mvc-5

我的模特是:

public class MyMessage
{
    [Required, Display(Name= "Recipient Id")]
    public string Recipient;
    [Required, Display(Name ="Message")]
    public string Text;
}

我的观点是:

@model MyMessage

@Html.LabelFor(m=>m.Recipient)
@Html.TextBoxFor(m=>m.Recipient)
<br/>
@Html.LabelFor(m => m.Text)
@Html.TextBoxFor(m => m.Text)

渲染的输出显示属性名称而不是Display属性。我做错了什么?

1 个答案:

答案 0 :(得分:2)

将模型中的字段更改为属性

public class MyMessage
{
    [Required, Display(Name= "Recipient Id")]
    public string Recipient { get; set; }
    [Required, Display(Name ="Message")]
    public string Text { get; set; }
}

没有为字段设置ModelMetadata.DisplayName。无论如何,您需要执行此操作,因为DefaultModelBinder未设置字段的值,因此当您提交表单时,RecipientText的值将为{{1}尽管您在文本框中输入了哪些文字,null由于ModelState属性

而无效