LabelFor htmlhelper MVC2:如何将propertyName设为空

时间:2010-09-01 11:30:59

标签: asp.net-mvc-2 c#-4.0 html-helper

我想使用类似于LabelFor的MVC HtmlHelper。

在此帮助程序的代码上使用反射器时,我找到了以下代码:

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是否为空。

我的问题是:在这种情况下,如何将propertyName设为空?

我使用的是因为我有一些看起来像这样的代码,我想在单元测试中测试它。

1 个答案:

答案 0 :(得分:1)

它不能为空。但它可以是一个空字符串,例如metadata.DisplayName是一个空字符串。