कैसे इस विस्तार विधि के बारे में
public static class LabelExtensions
{
public static string Label(this HtmlHelper helper, string target, string id, string text)
{
return String.Format("<label for='{0}' id='{1}'>{2}</label>", target,id, text);
}
}
संपादित
मुझे लगता है कि बेहतर तरीका tagbuilder this example के लिए इसी तरह का उपयोग करें और MergeAttribute फ़ंक्शन का उपयोग आईडी शामिल करने के लिए होगा। asp.net MVC के स्रोत में LabelFor सहायक से
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);
}
एक साधारण संशोधन:
वास्तव में, मुझे नहीं लगता कि LabelFor बिल्कुल एक आईडी कहते है - आईडी शायद करने के लिए आवंटित किया जाएगा:
यह निम्न HTML उत्पन्न इनपुट फ़ील्ड जो लेबल से जुड़ा हुआ है। मुझे लगता है कि आप सही हैं कि आपको एचटीएमएल विशेषताओं को जोड़ने के लिए गैर-दृढ़ता से टाइप किए गए संस्करण का उपयोग करने की आवश्यकता है। – tvanfosson