2013-04-28 49 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函數調用它時調用它纔會被調用。