asp.net mvc tutorial .NET MVC-Html.LabelFor को कक्षा कैसे असाइन करें?




mvc tutorial (3)

यह कोड

<%= Html.LabelFor(model => model.Name) %>

यह पैदा करता है

<label for="Name">Name</label>

लेकिन मुझे यह चाहिए

<label for="Name" class="myLabel">Name</label>

आप उसे कैसे करते हैं?


अफसोस की बात है, एमवीसी 3 में एचटीएमएल। लेबलफॉर () विधि में कोई विधि हस्ताक्षर नहीं है जो प्रत्यक्ष श्रेणी की घोषणा की अनुमति देता है। हालांकि, एमवीसी 4 में 2 ओवरलोड शामिल हैं जो HTMLAttributes अज्ञात ऑब्जेक्ट को स्वीकार करते हैं।

जैसा कि सभी HtmlHelpers के साथ यह याद रखना महत्वपूर्ण है कि सी # कंपाइलर class को आरक्षित शब्द के रूप में देखता है।

तो यदि आप वर्ग विशेषता से पहले @ का उपयोग करते हैं तो यह समस्या के आसपास काम करता है, यानी:

@Html.LabelFor(model => model.PhysicalPostcode, new { @class= "SmallInput" })

@ प्रतीक "कक्षा" को एक शाब्दिक बनाता है जिसे पारित किया जाता है।


ठीक है, इस विधि के लिए स्रोत (System.Web.Mvc.Html.LabelExtensions.cs) को देखते हुए, एएसपी.नेट एमवीसी 2 में एचटीएमएलहेल्पर के साथ ऐसा करने का कोई तरीका प्रतीत नहीं होता है। मुझे लगता है कि आपकी सबसे अच्छी शर्त या तो अपने स्वयं के HtmlHelper को बनाने या इस विशिष्ट लेबल के लिए निम्न कार्य करना है:

<label for="Name" class="myLabel"><%= Model.Name %></label>

लेबल के अधिभार के लिए:

public static class NewLabelExtensions
{
    public static MvcHtmlString LabelFor<TModel, TValue>(this HtmlHelper<TModel> html, Expression<Func<TModel, TValue>> expression, object htmlAttributes)
    {
        return LabelFor(html, expression, new RouteValueDictionary(htmlAttributes));
    }
    public static MvcHtmlString LabelFor<TModel, TValue>(this HtmlHelper<TModel> html, Expression<Func<TModel, TValue>> expression, IDictionary<string, object> htmlAttributes)
    {
        ModelMetadata metadata = ModelMetadata.FromLambdaExpression(expression, html.ViewData);
        string htmlFieldName = 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.MergeAttributes(htmlAttributes);
        tag.Attributes.Add("for", html.ViewContext.ViewData.TemplateInfo.GetFullHtmlFieldId(htmlFieldName));
        tag.SetInnerText(labelText);
        return MvcHtmlString.Create(tag.ToString(TagRenderMode.Normal));
    }
}

http://weblogs.asp.net/imranbaloch/archive/2010/07/03/asp-net-mvc-labelfor-helper-with-htmlattributes.aspx





asp.net-mvc