Je souhaite utiliser un HtmlHelper MVC similaire à LabelFor.LabelFor htmlhelper MVC2: Comment un propertyName par vide
Lors de l'utilisation réflecteur sur le code de cet auxiliaire, je trouve le code suivant:
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));
}
La fonction LabelHelper est la suivante:
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);
}
Dans la 3 ligne du deuxième exemple de code , il y a une vérification pour voir si le metadata.PropertyName est nul.
Ma question est: Comment un propertyName peut-il être vide dans ce cas? Je l'utilise parce que j'ai un code qui ressemble à ceci, et je veux le tester dans un test unitaire.
La source complète (et tous les commentaires) sont disponibles ici: http://aspnet.codeplex.com/releases/view/41742 – Robaticus