2011-06-16 50 views
0

好的,所以現在我試圖從正常的文本鏈接調用Ajax函數,但是我無法讓它正常工作(或根本不能)。如果我把它稱爲一個按鈕,它會正常工作。在.Net MVC中使用Ajax 2

本質上我試圖重新排序表中的項目。

如何從ActionLinkAjax調用Ajax?

下面是從一個按鈕調用時能正常工作的腳本:

<script type="text/javascript"> 

     $(document).ready(function() { 

      $(".Name").click(function() { 
       $.ajax({ 
        url: '<%= Url.Action("MyAction") %>', 
        dataType: 'html', 
        success: function(result) { $("#tableToUpdate").html(result); } 
       }); 
      }); 
     }); 
</script> 

回答

4

你需要通過返回從單擊處理虛假取消錨的默認操作;

$(".Name").click(function() { 
    $.ajax({ 
     url: '<%= Url.Action("MyAction") %>', 
     dataType: 'html', 
     success: function(result) { 
      $("#tableToUpdate").html(result); 
     } 
    }); 
    return false; // <-- that's important 
}); 

但我可能會直接使用鏈接的href:

<%= Html.ActionLink("Foo", "MyAction", null, new { @class = "Name" }) %> 

,我會悄悄地AJAXify在一個單獨的JavaScript文件(漸進增強):

$(function() { 
    $('.Name').click(function() { 
     $('#tableToUpdate').load(this.href); 
     return false; 
    }); 
}); 
+0

或者你可以簡單地設置href =# – Tassadaque 2011-06-16 19:22:07

+0

@Tassadaque,不,從SEO角度來說這很糟糕,因爲它會讓你的網站無法獲取。用JavaScript逐步增強是一種更好的技術。 – 2011-06-16 19:22:45

+0

完美,謝謝!我沒有意識到我必須改變腳本!當我被允許時會接受(從現在開始5分鐘) – James 2011-06-16 19:26:33

1

具有u看着ajax.actionlink

<%= Ajax.ActionLink("Update Status", "GetStatus", new AjaxOptions{UpdateTargetId="status" }) %>