Asp.net Mvc2 LabelFor и DisplayName от проп - PullRequest
1 голос
/ 19 января 2010

Context =>

${Html.CheckBoxFor(x => x.Foos[i].Checked)}
${Html.LabelFor(x => x.Foos[i].Checked)}

Проблема в том, что я не могу предоставить текст метки на основе Foo.Name.

Есть ли из коробки метод, как изменить метаданные, передавая лямбду x => x.Name для ее изменения?

Создает другой метод расширения HmtlHelper

LabelFor(this htmlhelper, [lambda], value, htmlattribs)

единственный способ?


Похожие проблемы

1 Ответ

3 голосов
/ 19 января 2010

Эх, как угодно. Обходной путь приемлем. Эта проблема не показывает topper =>

 public static MvcHtmlString LabelFor<TModel, TValue>(this HtmlHelper<TModel> html, Expression<Func<TModel, TValue>> expression, 
            string labelText, object htmlAttributes) where TModel : class
        {
            TagBuilder builder = new TagBuilder("label");
            builder.MergeAttributes(new RouteValueDictionary(htmlAttributes)); // to convert an object into an IDictionary
            string value = ExpressionHelper.GetExpressionText(expression); ;
            builder.InnerHtml = labelText;
            //the replaces shouldnt be necessary in the next statement, but there is a bug in the MVC framework that makes them necessary.
            builder.Attributes.Add("for", html.ViewContext.ViewData.TemplateInfo.GetFullHtmlFieldId(value).Replace('[', '_').Replace(']', '_'));
            return MvcHtmlString.Create(builder.ToString(TagRenderMode.Normal));
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...