【发布时间】:2019-09-24 15:46:12
【问题描述】:
我有一个为日期范围选择器输出 HTML 的扩展方法。
public static MvcHtmlString InputGroupDateRangePickerFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper,
Expression<Func<TModel, TProperty>> expression) where TProperty : IDateRange
此扩展方法有一个通用属性TProperty,它有一个IDateRange 约束。 IDateRange 接口具有From 和To 属性。
我希望能够像这样访问每个 IDateRange 属性:
var html = $"<div class=\"input-daterange input-group\">
{htmlHelper.TextBoxFor(expression.From)}
{htmlHelper.TextBoxFor(expression.To)}</div>";
由于expression 参数是一个表达式函数,我无法访问这些属性。
我最初有两个表达式参数,一个用于From 属性,另一个用于To 属性。
Html.InputGroupDateRangePickerFor(x => x.Search.From, x => x.Search.To)
但我只想像这样传递IDateRange 对象
Html.InputGroupDateRangePickerFor(x => x.Search.DateRange)
【问题讨论】:
-
为什么你有
Expression<Func>而没有Func? -
我只是模仿了TextBoxFor参数
标签: c# html generics expression extension-methods