2012-04-11 46 views
0

在確認對話框中單擊「是」或「否」後,OnSuccessForm()函數不會觸發。有關如何在繼續之前暫停onBeginForm()的想法?Ajax.BeginForm確認對話框觸發OnSuccessForm()前的onBeginForm()

我MVC3形式

@using (Ajax.BeginForm("Edit", @ViewContext.Controller.ValueProvider.GetValue("controller").RawValue, new AjaxOptions 
{ 
    UpdateTargetId = Model.Title.Replace(" ", "") + "Form", 
    InsertionMode = InsertionMode.Replace, 
    OnBegin = "onBeginForm", 
    OnSuccess = "OnSuccessForm", 
    OnFailure = "showFaliure" 
})) 
{ 
    @Html.ValidationSummary(true) 
    @Html.RenderStandardEditor("Edit " + Model.Title) 
} 

這裏是我的JavaScript代碼示例

<script type="text/javascript"> 
    var confirmation = false; 
    function onBeginForm(ajaxContext) 
    { 
    $.confirm({ 
    'title': 'Confirmation', 
    'message': 'Confirm?', 
    'buttons': { 
     'Yes': { 
     'class': 'cyan', 
     'action': function() 
     { 
      confirmation = true; 
     } 
     }, 
     'No': { 
     'class': 'gray', 
     'action': function() 
     { 
      confirmation = false; 
     } 
     } 
    } 
    }); 
} 

function OnSuccessForm(ajaxContext) 
{ 
    if (confirmation == true) 
    { 
    //DO SOMETHING   
    } 
} 

function showFaliure(ajaxContext) 
{ 
    //THROW ERROR 
} 

</script> 

回答

1

我相信你正在使用的onSuccess函數不正確。只有在您的數據成功發佈後,該功能纔會被調用。因此,不管在確認框中選擇了什麼內容,數據都將以任何方式發佈,然後您的確認框僅確定是否在發佈後使​​用此數據完成任何操作。這真的是你想要的嗎?至於爲什麼你的onSuccessForm沒有被擊中,我可以提供的所有方法都是嘗試調試它。 showFaliure是否被調用?使用螢火蟲控制檯是否有數據發佈?如果你註釋掉onBeginForm函數中的所有內容,onSuccessForm會被調用嗎?