LabelFor htmlhelper MVC2: как можно propertyName по пустым - PullRequest
0 голосов
/ 01 сентября 2010

Я хочу использовать MVC HtmlHelper, аналогичный LabelFor.

При использовании отражателя в коде для этого помощника я обнаружил следующий код:

public static MvcHtmlString LabelFor<TModel, TValue>(this HtmlHelper<TModel> html,       Expression<Func<TModel, TValue>> expression)
{
    return LabelHelper(html, ModelMetadata.FromLambdaExpression<TModel, TValue>(expression, html.ViewData), ExpressionHelper.GetExpressionText(expression));
}

Функция LabelHelper имеет видследующим образом:

internal static MvcHtmlString LabelHelper(HtmlHelper html, ModelMetadata metadata, string htmlFieldName)
{
    string str = metadata.DisplayName ?? (metadata.PropertyName ?? htmlFieldName.Split(new char[] { '.' }).Last<string>());
    if (string.IsNullOrEmpty(str))
    {
        return MvcHtmlString.Empty;
    }
    TagBuilder builder = new TagBuilder("label");
    builder.Attributes.Add("for", html.ViewContext.ViewData.TemplateInfo.GetFullHtmlFieldId(htmlFieldName));
    builder.SetInnerText(str);
    return builder.ToMvcHtmlString(TagRenderMode.Normal);
}

В строке 3 второго примера кода есть проверка, чтобы определить, имеет ли значение metadata.PropertyName значение null.

Мой вопрос: как свойство propertyName может быть пустым?в этом случае?

Я использую это, потому что у меня есть некоторый код, похожий на этот, и я хочу проверить его в модульном тесте.

1 Ответ

1 голос
/ 01 сентября 2010

Это не может быть нулем.Но это может быть пустая строка, например, когда metadata.DisplayName является пустой строкой.

...