如何在@ Ajax.Beginform()中发送附加参数以及模型值?

时间:2013-05-27 06:58:25

标签: asp.net-mvc ajaxform

我在我的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参数传递给控制器​​..

1 个答案:

答案 0 :(得分: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());
}