Dưới đây là một helper mà nên làm những gì bạn cần:
public static MvcHtmlString LabelFor<TModel, TValue>(this HtmlHelper<TModel> html, Expression<Func<TModel, TValue>> expression, string id)
{
ModelMetadata meta = ModelMetadata.FromLambdaExpression(expression, html.ViewData),
string ExpressionHelper.GetExpressionText(expression)
string labelText = metadata.DisplayName ?? metadata.PropertyName ?? htmlFieldName.Split('.').Last();
if (String.IsNullOrEmpty(labelText)) {
return MvcHtmlString.Empty;
}
TagBuilder tag = new TagBuilder("label");
tag.Attributes.Add("for", html.ViewContext.ViewData.TemplateInfo.GetFullHtmlFieldId(htmlFieldName));
tag.MergeAttribute("id", id);
tag.SetInnerText(labelText);
return tag.ToMvcHtmlString(TagRenderMode.Normal);
}
một sửa đổi đơn giản từ các helper LabelFor trong nguồn MVC asp.net.
Nguồn
2010-09-06 01:47:42
Thực ra, tôi không nghĩ rằng LabelFor thêm một id ở tất cả - id có lẽ sẽ được áp dụng cho trường nhập được liên kết với nhãn. Tôi nghĩ rằng bạn đúng rằng bạn cần sử dụng phiên bản không được đánh máy mạnh để thêm các thuộc tính HTML. – tvanfosson