2012-08-28 154 views
0

我最近一直在学习MVC 3,并且发现了两种从我的列表视图中删除记录的解决方案。不过,我希望他们两个的组件,但我在JavaScript中缺乏知识使这非常困难。使用jquery-ui对话框的MVC3 Ajax链接确认对话框

我有这两个链接删除:

@Html.ActionLink("Delete", "Delete", 
    new { id = item.ID }, new { @class = "delete-link" }) | 
@Ajax.ActionLink("Delete Ajax", "Delete", "MyController", 
    new {id = item.ID}, 
    new AjaxOptions { 
     HttpMethod = "POST", 
     OnBegin = "return ConfirmDone()", 
     OnSuccess = "deleteConfirmation" 
    }) 

第一个使用下面的JavaScript删除的记录:

<script> 
    $(function() { 
     var deleteLinkObj; 
     // delete Link 
     $('.delete-link').click(function() { 
      deleteLinkObj = $(this); 
      $('#delete-dialog').dialog('open'); 
      return false; 
     }); 

     //definition of the delete dialog. 
     $('#delete-dialog').dialog({ 
      autoOpen: false, width: 400, resizable: false, modal: true, 
      buttons: { 
       "Continue": function() { 
        $.post(deleteLinkObj[0].href, function (data) 
        { 
         var rowId = "#myTableItem-id-" + data.id; 
         $('.myTable').find(rowId).hide('slow'); 
        }); 

        $(this).dialog("close"); 
       }, 
       "Cancel": function() { 
        $(this).dialog("close"); 
       } 
      } 
     }); 
    }); 
</script> 

第二链路使用这个脚本功能进行确认:

<script> 
    function ConfirmDone() { 
     return confirm("Are you sure you want delete this item?"); 
    } 
</script> 

现在这两种解决方案都可以正常工作,但我更喜欢编码的第二个链接,但我喜欢jquery-ui在第一个链接中生成的确认框。所以我想将它们混合在一起。

我想我需要做的是,当Ajax.ActionLink呼叫ConfirmDone()然后我需要显示一个jQuery对话框,因为我对第一个链接。然而,我不确定如何产生这个,并允许这个对话框根据按下的按钮返回true或false。

任何帮助将不胜感激。

非常感谢。

回答

0

尝试的事情了几个小时后,我已经想出了一个解决方案:

我的链接改成这样:

@Ajax.ActionLink("Delete", "Delete", "StruContractUser", 
    new { id = item.UserID }, 
    new AjaxOptions { 
     HttpMethod = "Delete", 
     OnBegin = "JSONDeleteFile_OnBegin", 
     OnComplete = "notify" 
    }, 
new { @class = "delete-link" }) 

其中要求与OnBegin选择此功能:

<script type="text/javascript"> 
    function JSONDeleteFile_OnBegin(context) { 
     return false; 
    } 
</script> 
+0

你的意思是返回'false'不显示默认的确认对话框,并显示你想要的jQuery对话框 – TheVillageIdiot