免責事項:私はいくつかの調査を行いましたが、私がやろうとしていることに最も近い既存の質問は次のとおりです:HtmlHelper ExtensionsでhtmlAttributesパラメーターをサポートする方法は?
カスタム htmlAttributes のセットで TextBoxFor を呼び出す新しい DatePickerFor を作成しようとしています。これは純粋に、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ルールを破ったという非常に強いにおいがします.
誰かが洞察を提供できますか?