MVC中的可访问<label> </label>

时间:2010-03-31 15:33:56

标签: asp.net-mvc accessibility

鉴于以下MVC加价:

    <p>
        <label for="forenamesLabel">Forename(s):</label>
        <%: Html.TextBoxFor(model => model.ConsultantRegistrationDTO.Forenames) %>
        <%: Html.ValidationMessageFor(model => model.ConsultantRegistrationDTO.Forenames, "*") %>
    </p>

如何通过MVC准确地将label / @属性设置为生成的TextBox的id?如果我使用@id作为HTML选项,那不会破坏我的绑定吗?

2 个答案:

答案 0 :(得分:1)

您可以使用

Html.LabelFor(c model => model.ConsultantRegistrationDTO.Forenames)

然后在您的模型中,您需要从DisplayNameAttribute指定System.ComponentModel.DataAnnotations。所以你的模型看起来像这样:

public class ConsultantModel
{
    [DisplayName("Forenames")]
    public string Forenames { get; set; }
}

答案 1 :(得分:1)

正如Keltex所建议的那样,您可以将Html.LabelFor与DisplayName装饰器一起使用。一些与此相关的考虑因素。

LabelFor和DisplayName装饰器特定于MVC 2.这可能是也可能不适合您。

使用此方法,特别是使用DisplayName装饰器,将View关注引入到模型中,这有时是不可取的。通常最好创建一个ViewModel并在那里使用装饰器来保持关注点的分离。

这也允许您在模型自动生成时使用DisplayNameAttribute,就像您所说的那样。