同じビューに同様の機能を持つ 2 つの送信フォームを作成しようとしています。各フォームは同じモデルに厳密に型指定されています。次に、両方のフォームで同じ入力に日付ピッカーを追加しようとしていますが、これを行う方法がわかりません。これが私のコードです:
@using (@Ajax.BeginForm(...
new { id = "editScheduleForm" }))
{
<div class="editor-label">
@Html.LabelFor(model => model.StartTime)
</div>
<div class="editor-field">
<input
@Html.EditorFor(model => model.StartTime)
@Html.ValidationMessageFor(model => model.StartTime)
</div>
}
...
@using (@Ajax.BeginForm(...
new { id = "addScheduleForm" }))
{
<div class="editor-label">
@Html.LabelFor(model => model.StartTime)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.StartTime)
@Html.ValidationMessageFor(model => model.StartTime)
</div>
}
これらの形式はどちらも、厳密に型指定された独自の部分ビューにあります。私は当然のことながら、次のように両方の部分ビューに jQuery の日付ピッカーを追加するだけでした。
$(function () {
$("#StartTime").datepicker();
});
しかし、当然のことながら、入力の 1 つに対してしか機能しませんでした。両方の Ajax フォーム宣言 (editScheduleForm と addScheduleForm など) に追加した HTML ID を使用しようとしていますが、これを行う方法がわかりません。助言がありますか?
解決策: scottm が示唆したように、カスタム エディター テンプレートの使用に関するドキュメントを調べました。これを読んで、存在を知らなかった機能の詳細を説明しました: http://msdn.microsoft.com/en-us/library/ee407399.aspx
ここでは、テンプレートを指定してから、htmlFieldName のパラメーターを追加できます。これは、発生していた問題を回避するために特別に設計されています。