我正在尝试为ComplexType
创建自定义HTML帮助程序。帮助者应该使用各自的<input>
插入多个<label>
标记。例如,ComplexType
代表具有City
,Street
和HouseNumber
属性的地址。我在尝试使用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);