0

我在我的asp.net mvc3 应用程序中使用@Ajax.BeginForm()。由于页面是紧密绑定的,它会在单击提交按钮时发送模型值。我的要求是 onclick 提交按钮,我需要使用一些逻辑填充表单外部存在的列表框,并将列表框中存在的 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>

Onclick 提交按钮,我使用 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回调将选择框克隆到表单中:

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