0

asp.net mvc3 アプリケーションで @Ajax.BeginForm() を使用しています。ページは厳密にバインドされているため、送信ボタンをクリックするとモデル値が送信されます。私の要件は、送信ボタンのオンクリックです。何らかのロジックを使用してフォームの外側にあるリストボックスにデータを入力し、リストボックスにある値の Json リストを追加のパラメーターとしてコントローラーに渡す必要があります。これを達成する方法は?

@using (Ajax.BeginForm("Controller_Method", "Controller_Name", new AjaxOptions { HttpMethod = "POST", OnSuccess = "SUCCESS" }))
{
}

<select id="listbx">
 <option value="volvo">Volvo</option>
 <option value="saab">Saab</option>
 <option value="mercedes">Mercedes</option>
 <option value="audi">Audi</option>
</select>

送信ボタンをクリックすると、jQuery を使用してリストボックスに項目を追加し、すべての項目を json パラメーターとしてコントローラーに渡したい..

4

1 に答える 1

1

cloneフォームを送信する前に、非表示の div でフォーム内の選択ボックスを使用できます。

また、選択リストに属性を追加することを忘れないでください。そうしないnameと、コントローラーに何もポストされません。

@using (Ajax.BeginForm("Controller_Method", "Controller_Name", new AjaxOptions { HttpMethod = "POST", OnSuccess = "SUCCESS", OnBegin = "beforeSend" }))
{
    <div id="listBoxContainer" style="display:none;"></div>
}

<select id="listbx" name="listbox">
 <option value="volvo">Volvo</option>
 <option value="saab">Saab</option>
 <option value="mercedes">Mercedes</option>
 <option value="audi">Audi</option>
</select>

次に、beforeSendコールバックを実装して、selectbox をフォームに複製します。

function beforeSend() {
    $('#listBoxContainer').html($('#listbx').clone());
}
于 2013-05-27T07:04:44.853 に答える