【发布时间】:2013-02-09 00:51:43
【问题描述】:
免责声明:我已经做了一些研究,我能找到的最接近我正在尝试做的现有问题是:How to Support htmlAttributes Parameters in HtmlHelper Extensions?
我正在尝试编写一个新的 DatePickerFor,它使用一组自定义 htmlAttributes 调用 TextBoxFor。这纯粹是为了让我不必在每次想使用 DatePicker 时添加属性。
到目前为止,我有:
public static MvcHtmlString DatePickerFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression)
{
return htmlHelper.TextBoxFor(expression, new { @class = "datepicker", data_date_weekStart = 1, data_date_format = System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat.ShortDatePattern.ToLower() });
}
我已经设法让它正常工作。棘手的一点是当我开始在我的 DatePickerFor 上添加额外的参数时。比如说,我想要以下签名:
public static MvcHtmlString DatePickerFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression, DateTime earliest)
此方法的行为应该与上述方法几乎相同,但它应该为 data_startDate 添加另一个 htmlAttribute,如下所示:
return htmlHelper.TextBoxFor(expression, new { @class = "datepicker", data_date_weekStart = 1, data_date_format = System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat.ShortDatePattern.ToLower(), data_startDate = earliest.ToShortDateString() });
如何创建一个方法签名,以及对 TextBoxFor 的伴随调用,该调用采用未知的参数组合?最初我可能希望拥有:
- 开始日期
- 结束日期
- 开始日期和结束日期
- StartDate 和 AllowWeekendSelection
- EndDate 和 AllowWeekendSelection
- StartDate 和 EndDate 以及 AllowWeekendSelection
等等……
我想我可以编写一个接受每个参数的方法签名,以及一个像上面那样调用 TextBoxFor 的实现,为该特定方法签名添加所有相关属性。但这闻起来很违反 DRY 规则。
谁能提供一些见解?
【问题讨论】:
标签: c# asp.net-mvc-4 html-helper