鉴于以下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选项,那不会破坏我的绑定吗?
答案 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,就像您所说的那样。