免责声明:我做过一些研究,我能找到的最接近的问题是: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的调用,该调用需要未知的参数组合?最初我可能希望:
依旧......
我想我可以编写一个方法签名来获取每个参数,以及一个如上所述调用TextBoxFor的实现,为该特定方法签名添加所有相关属性。但这有点强烈打破干旱规则。
有人能提供一些见解吗?