如何在html.LabelFor中显示一些文字?

时间:2010-09-07 15:06:24

标签: asp.net-mvc html-helper

我正在这样做:

Hello <%=  Html.LabelFor(user => user.UserName)%>

但是我得到的不是属性中的值,而是像这样奇怪的东西:

Hello User Name,

怎样才能在标签中给出一些价值呢?

2 个答案:

答案 0 :(得分:13)

将DataAnnotations添加到模型/ viewmodel:

public class Customer
{
    [Display(Name = "Email Address", Description = "An email address is needed to provide notifications about the order.")]
    public string EmailAddress { get; set; }

    [Display(ResourceType=typeof(DisplayResources), Name="LName", Description="LNameDescription")]
    public string LastName { get; set; }
}

来源:http://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.displayattribute(v=VS.95).aspx

如果您没有按DisplayAttribute提供显示名称,则Html.EditorFor(...)使用属性名称,将其拆分为大写字母:

PropertyName - &gt;标签文字
电子邮件 - &gt;电子邮件
EmailAdress - &gt;电子邮件地址

答案 1 :(得分:10)

原因是因为Html.LabelFor会这样做 - 为属性创建标签。在这种情况下,它生成一个“用户名”标签,因为属性名称是UserName。

您只需要查看模型(或传递给视图的任何内容)以返回属性值:Html.Encode(Model.UserName)

更新(因为这是近3年前,但人们最近投了赞成票):

您可以使用<%: Model.UserName %>来获取HTML编码值(<%=将其写为原始值并<%:将其编码编写。)

如果您使用的是Razor视图引擎,那么@Model.Username会将其编写为已编码。