2012-03-10 22 views
2

我有以下ajax.actionlink: -Ajax.Actionlink OnBegin確認不會阻止被稱爲Ajax調用,如果用戶點擊「取消」按鈕

@Ajax.ActionLink("Delete", "Delete", "Answer", 
    new { id = answer.AnswersID }, 
     new AjaxOptions 
     { 
      OnBegin = "deleteconfirmation1", 
      HttpMethod = "Post", 
      UpdateTargetId = @answer.AnswersID.ToString(), 
      OnSuccess = "deleteconfirmation", 

     }) 

及以下deleteconfirmation1.js應執行Ajax調用之前顯示確認消息: -

function deleteconfirmation1() { 
jConfirm('Deletion Confirmation', 'Are you sure you want to delete this Answer'); 
} 

,我現在面臨的問題是,onbegin confiramtion不會阻止的onSuccess腳本被執行,即使在取消按鈕,用戶點擊?所以我如何讓OnBegin作爲確認階段工作,所以應用程序將在用ajax調用進程之前等待用戶選擇「確定」或「取消」! ?? BR

回答

4

您需要從OnBegin方法返回false取消請求。

請注意,Ajax.ActionLink已支持使用AjaxOptions.Confirm屬性進行確認。

您還需要在您的視圖/佈局中包含~/Scripts/jquery.unobtrusive-ajax.js以使用@Ajax.助手。

EDIT問題與jConfirm

你的問題是,jConfirm簽名如下:

void jConfirm(message, [title, callback]) 

它,而不是返回真/假希望當用戶點擊被稱爲一個回調函數在確定/取消。

這會導致問題,因爲你需要從OnBegin返回false但您不必只是在回調從jConfirm返回值...

所以你應該等待回調....看到這個SO問題Can you wait for javascript callback? (這也是約jConfirm)欲瞭解更多信息。

結論是,您不能使用jConfirm通過OnBegin方法取消請求。

+0

我沒有使用AjaxOption.Confirm,因爲我想使用定製的Java腳本確認。第二件事刪除將被執行,即使JConfirm對話框仍然顯示之前選擇確定或取消,爲什麼我不認爲這是涉及到返回錯誤或不....... – 2012-03-10 19:36:34

+0

試一試內置'確認'JS功能,因爲它應該工作。它連接'jConfirm'做確認異步,這就是爲什麼返回值似乎沒用。你能提供一個'jConfirm'的鏈接嗎? – nemesv 2012-03-10 19:46:06

+0

感謝您的回覆;這裏是鏈接http://www.abeautifulsite.net/blog/2008/12/jquery-alert-dialogs/。關於提供內置確認,我不知道從哪裏我應該在腳本中調用buil在我的ajax.actionliknk – 2012-03-10 20:10:32

相關問題