使用LabelFor的ASP.NET MVC 5.2自定义Html助手

时间:2015-09-13 22:47:53

标签: c# asp.net asp.net-mvc asp.net-mvc-5.2

我正在尝试为ComplexType创建自定义HTML帮助程序。帮助者应该使用各自的<input>插入多个<label>标记。例如,ComplexType代表具有CityStreetHouseNumber属性的地址。我在尝试使用Label(string)LabelForModel(string)LabelFor<TModel, TProperty>(...)的内置功能时遇到了一些问题。 Label()LabelForModel()方法都不做任何事情,只输出我作为参数传递的字符串。对于LabelFor<>()我传递了与地址子属性相关的正确表达式,但我得到了ArgumentException,说明模型中没有这样的属性,例如Street。但是,如果我直接在View中使用LabelFor,我没有任何问题。我得到了这个字段的本地化标题。

以下是我尝试的代码的摘录:

var htmlHelper2 = new HtmlHelper(htmlHelper.ViewContext, htmlHelper.ViewDataContainer);
var propertyName = "Address." + propertyInfo.Name;
builder.InnerHtml += htmlHelper2.Label(propertyName);

builder.InnerHtml += htmlHelper2.LabelForModel(propertyName);

我也尝试了这个:

var labelForExpression = Expression.Lambda<Func<TModel, TProperty>>
               (Expression.Property(expr.Body, property), expr.Parameters);
builder.InnerHtml += htmlHelper.LabelFor(labelForExpression);

0 个答案:

没有答案