2013-04-28 50 views
1

所以,我想表明删除从我的表中的一行时弹出,所以这是我的动作链接:如何在mvc 4中创建弹出窗口?

<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.js")" type="text/javascript"></script> 
    <script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.js")" type="text/javascript"></script> 
    <script src="@Url.Content("~/Scripts/jquery-ui-1.8.20.min.js")" type="text/javascript"></script> 

@Html.ActionLink("Delete", "Delete", new { id=item.cin },new { @class = "delete-logo" ,@pkNo=item.cin}) 
<div id="confirmDialog" title="Warning"></div> 

我的脚本:

<script type="text/javascript"> 

$(document).ready(function() { 
    buttonizeALL(); 
    setLinks(); 
}); 

function buttonizeALL() 
{   
    $(".delete-logo").button(); 
} 

function setLinks() 
{ 
    //delete person 
    $(document).ready(function() { 
     $(".delete-logo").live("click", function (e) { 
      e.preventDefault(); 

      var pkNo = $(this).attr("pkNo"); 


      $("#confirmDialog").dialog({ 
       resizable: false, 
       height: 200, 
       width: 300, 
       modal: true, 
       buttons: { 
        "Yes": function() { 
         $(this).dialog("close"); 
         var rowNo = '#row-' + pkNo; 
         var url = '/Subscribers/Delete/' + pkNo; 
         $.ajax({ 
          type: "Delete", 
          url: url, 
          data: {}, 
          cache: false, 
          dataType: "json", 
          success: function() { 

           $(rowNo).animate({ opacity: 0.0 }, 400, function() { 
            $(rowNo).remove(); 
           }); 

          }, 

          error: function (jqXHR, exception) { 
           alert('Uncaught Error.\n' + jqXHR.responseText); 
          } 

         }); //end ajax call 

        }, // end of yes button 
        "No": function() { 
         $(this).dialog("close"); 
        } 
       } //end buttons 
      }); //end modal 
     });  //end delete 

    }); 
} //end setLinks 

我的问题是弹出不起作用,当我用我的脚本没有弹出它的作品,所以请如果有人有任何想法,我将非常感激。

+0

我想代码行'new {id =“ed”}'应该像这样'new {@id =“ed”}' – 2013-04-28 14:18:16

+0

试试这个'@ Html.ActionLink(“Delete”,“Delete” ,new {@id =“ed”,@class =“delete-logo”,@pkNo =“ed”})' – 2013-04-28 14:27:01

回答

1

Here就是你在jsFiddle中整理了一些例子,即将setLinks()代码移入document.ready()函数中。

$(document).ready(function() { 
    buttonizeALL(); 
    setLinks(); // removed this 
}); 

此外,我用它将呈现的锚点标记替换ActionLink。 这是使用Jquery 1.8.3和jQuery UI 1.9.2。弹出接缝工作正常。

+0

你可以告诉e.preventDefault()在这个'$(“。delete-logo “).live(”click“,function(e){' – 2013-04-28 13:40:34

+0

'e.preventDefault()'是从原问题的JavaScript中复制而来的,这种方法的正常使用是为了防止点击''的默认事件。 delete-logo'anchor from triggered被触发。 – wellers 2013-04-28 13:43:59

+0

感谢wellers,我测试它可以用于简单的链接(),但它仍然不能与我的actionlink一起工作 – Mohammadov 2013-04-28 13:55:38

1

首先,不要再使用“live”命令。这已被弃用,以代替“on”命令。也不需要在setLinks函数中使用$(document).ready。由于它是一个独立的函数(不是自执行的),它只有在你调用doc.ready函数调用它时调用它才会被调用。