我正在尝试对我的网站中经常使用但具有不同字段的复杂控件进行通用化。控件中的功能始终相同,只是底层字段发生了变化。
为了实现显示不同字段的方法,我试图创建一个接受 aExpression<Func<TModel,TProperty>>
作为参数的 HTMLHelper 扩展,该扩展将包含在控件中显示所需的类的属性。例如:
风景:
@model Project.Core.Page
@Html.MyHelper(p => new { p.Author.Name, p.Author.Location, p.Author.Age });
这是我遇到问题的扩展 - 我如何迭代 lambda 中提供的参数以为每个参数提供 a TextBoxFor()
,甚至手动创建一个元素并使用lambda 参数的andinput
填充它?value
name
伪扩展:
public static MvcHtmlString MyHelper<TModel,TProperty>(
this HtmlHelper<TModel> helper,
Expression<Func<TModel,TProperty>> expression) {
foreach (var parameter in expression.???) {
// helper.TextBoxFor(???)
// TagBuilder("input").Attributes("name", expression.???)
}
}
我觉得我已经盯着这个太久了,而且我也觉得有一种更简单的方法我忽略了实现这一目标。
任何帮助是极大的赞赏。如果您需要更多详细信息,或者我错过了一些重要的信息,请告诉我。