1

ユーザーが jQuery を使用して ajax を使用せずにビュー モデルにアイテムを追加できるようにしたいと考えています。

私が ajax を使用したくない理由は、ajax がないとユーザーが [保存] をクリックする必要があるためです。これにより、誤って何かを変更する可能性が低くなります。

動作していますが、ちょっとしたハックのようです。

'<tr>'+
'<td class="detail-priority">' +
'<input id="ComplianceSeverityLevel_4__ComplianceSeverityLevelId" type="hidden" value="-1" name="ComplianceSeverityLevel[4].ComplianceSeverityLevelId" data-val-required="The ComplianceSeverityLevelId field is required." data-val-number="The field ComplianceSeverityLevelId must be a number." data-val="true">' +
'<input id="ComplianceSeverityLevel_4__Priority" class="valid" type="text" value="0" name="ComplianceSeverityLevel[4].Priority" data-val-required="The Priority field is required." data-val-number="The field Priority must be a number." data-val="true">' +
'</td>' +
'</tr>'

基本的に、ASP.NET MVC が生成する HTML をコピーし、ID 値を -1 に設定して、新しいエントリを作成するようにします。

配列インデックスも生成する必要があります。これは、これを行うための最適な方法とは思えません。この件に関する記事はいくつかありますが、それらはすべて ajax に関係しています。

これをもっと効率的に行う方法はありますか?

4

1 に答える 1

1

あなたができることは、コントローラーのモデルに「新しい」アイテムを追加することです(または、必要に応じてビューに追加します)。このようにして、コレクションに少なくとも 1 つのアイテムが含まれます。

これで、ハードコーディングされた HTML (ビューを変更するたびに更新する必要があります) を追加する代わりに、ページの最後の項目を.clone()して、必要な ID を更新できます。

送信時に、空のアイテムが含まれないように HTML の最後のアイテムの入力フィールドを無効にするか、サーバー側でチェックして最後のアイテムを除外することができます。

于 2013-08-07T11:42:36.807 に答える