दुर्भाग्य से इस सहायक का कोई अंतर्निहित अधिभार नहीं है जो आपको इसे प्राप्त करने की अनुमति देता है।
सौभाग्य से यह कोड की लाइनें लग लागू करने के लिए अपने निजी:
@Html.LabelFor(m => m.Foo, new { id = "Foo" })
@Html.TextBoxFor(m => m.Foo)
टिप्पणी:
public static class LabelExtensions
{
public static MvcHtmlString LabelFor<TModel, TValue>(
this HtmlHelper<TModel> html,
Expression<Func<TModel, TValue>> expression,
object htmlAttributes
)
{
return LabelHelper(
html,
ModelMetadata.FromLambdaExpression(expression, html.ViewData),
ExpressionHelper.GetExpressionText(expression),
htmlAttributes
);
}
private static MvcHtmlString LabelHelper(
HtmlHelper html,
ModelMetadata metadata,
string htmlFieldName,
object htmlAttributes
)
{
string resolvedLabelText = metadata.DisplayName ?? metadata.PropertyName ?? htmlFieldName.Split('.').Last();
if (string.IsNullOrEmpty(resolvedLabelText))
{
return MvcHtmlString.Empty;
}
TagBuilder tag = new TagBuilder("label");
tag.Attributes.Add("for", TagBuilder.CreateSanitizedId(html.ViewContext.ViewData.TemplateInfo.GetFullHtmlFieldName(htmlFieldName)));
tag.MergeAttributes(new RouteValueDictionary(htmlAttributes));
tag.SetInnerText(resolvedLabelText);
return MvcHtmlString.Create(tag.ToString(TagRenderMode.Normal));
}
}
और एक बार गुंजाइश में लाया अपने ध्यान में रखते हुए इस सहायक का उपयोग अब यह क्योंकि एचटीएमएल आईडी प्रबंधित करने के लिए आप पर निर्भर है, सुनिश्चित करें कि वे पूरे दस्तावेज़ में अद्वितीय हैं।
टिप्पणी 2: मैंने एएसपी.नेट एमवीसी 3 स्रोत कोड से LabelHelper
विधि को बेकार ढंग से चोरी और संशोधित किया है।
स्रोत
2011-06-06 16:34:26
कारण है कि आप क्या करने के लिए मीटर => m.Foo क्यों सिर्फ m.Foo नहीं है के लिए – Nikos
क्योंकि आपको एक अभिव्यक्ति डालना है जिसे मूल्य डालने के बजाय पढ़ा जा सकता है। –