是否有实现这一目标的一个简单的方法?
不,您可以让控制器操作传递结果中单击的按钮。可以这样做既可以作为一个JSON属性(如果你正在返回JSON),或者它也可能是一个自定义的响应HTTP头。
然后在你的成功回调(只能是一个)中,你可以检索这个值,以便知道哪个按钮被点击并采取相应的行动。
因此,通过给一个名字到您的提交按钮启动,让你知道一个被点击其中:
@using (Ajax.BeginForm("Save", "Company", new AjaxOptions() {
HttpMethod="Post", OnSuccess="onSuccess"
}, new { id = "companyEditForm" })) {
....some edit fields......
Save & Next
Save
}
然后你的控制器动作中
[HttpPost]
public ActionResult Save(MyViewModel model)
{
Response.AppendHeader("X-Button", Request["btn"]);
... your usual processing
}
和你onSucecss回调终于里面:
function onSuccess(data, status, xhr) {
function onSuccess(data, status, xhr) {
var btn = xhr.getResponseHeader('X-Button');
if (btn == 'save_next') {
// The "Save & Next" button was clicked
} else if (btn == 'save') {
// The "Save" button was clicked
} else {
// The user didn't submit the form by using the mouse and
// clicking on a button, he simply pressed Enter while
// inside some text field or you have some other portion of
// javascript which triggered the form submission without pressing
// on any submit button
}
}
}