我想使用類似於LabelFor的MVC HtmlHelper。LabelForHtmlHelper MVC2:如何能通過空的propertyName
當使用上這個助手代碼反射器,我發現了以下的代碼:
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?
我使用這個,因爲我有一些看起來像這樣的代碼,我想在單元測試中測試它。
爲什麼使用反射器來源?完整的源代碼(和任何評論)可在這裏找到:http://aspnet.codeplex.com/releases/view/41742 – Robaticus 2010-09-01 19:14:19