是否有實現這一目標的一個簡單的方法?
不,您可以讓控制器操作傳遞結果中單擊的按鈕。可以這樣做既可以作爲一個JSON屬性(如果你正在返回JSON),或者它也可能是一個自定義的響應HTTP頭。
然後在你的成功回調(只能是一個)中,你可以檢索這個值,以便知道哪個按鈕被點擊並採取相應的行動。
因此,通過給一個名字到您的提交按鈕啓動,讓你知道一個被點擊其中:
@using (Ajax.BeginForm("Save", "Company", new AjaxOptions() {
HttpMethod="Post", OnSuccess="onSuccess"
}, new { id = "companyEditForm" })) {
....some edit fields......
<button type="submit" name="btn" value="save_next">Save & Next</button>
<button type="submit" name="btn" value="save">Save</button>
}
然後你的控制器動作中
[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
}
}
}
嗨,達林。你的解決方案適合我。但是,我在javascript onSuccess函數中獲取了「status,xhr」的未定義值。我錯過了什麼嗎? – 2013-05-29 06:15:12
我應該使用哪個jQuery庫? – 2013-05-29 06:15:44