2012-07-15 87 views

回答

9

ActionLink輔助方法會呈現一個anchor標記,點擊哪個總是一個GET請求。如果你想使它成爲POST請求。你應該用一個小javacsript現在

@ActionLink("Delete","Delete","Item",new {@id=4},new { @class="postLink"}) 

一些jQuery代碼覆蓋默認behviour

<script type="text/javascript"> 
    $(function(){ 
    $("a.postLink").click(function(e){ 
     e.preventDefault(); 
     $.post($(this).attr("href"),function(data){ 
      // got the result in data variable. do whatever you want now 
      //may be reload the page 
     }); 
    });  
    });  
</script> 

請確保您有HttpPost類型的Action方法來處理這個請求

[HttpPost] 
public ActionResult Delete(int id) 
{ 
    // do something awesome here and return something  
} 
4

我會做的是包裝你周圍的HTML表單

@using(Html.BeginForm("YourAction","YourController", FormMethod.Post)){ 

<button>Hello</button> 

} 

而不是使用鏈接,您可能需要使用一個按鈕。

如果你真的想用一個鏈接,你可能需要一些JavaScript

事情是這樣的:

$("#idOfYourLink").click(function(){ 
var form = $(this).parents('form:first'); 
form.submit(); 
}); 
0

如果你覺得...有在HTML鏈路沒有標籤,做了POST。這就是爲什麼你不能強制鏈接進行POST(而且沒有任何意義)。 要使用「POST」,你應該「發佈」一些東西。那東西應該是一種形式,或者你可以使用AJAX的javascript函數進行POST。 無論如何,如果你需要發佈沒有發佈任何東西,你應該檢查你的資源模型,有些東西很臭。

+0

這實際上在Rails社區中非常常見並且完全可以接受,例如作爲de lete物體。 – wgpubs 2012-07-17 04:43:50

1

不可能讓<a>元素執行POST到Web服務器。

您可以使用Javascript捕獲單擊事件,停止導航並執行AJAX POST到服務器,但是如果用戶禁用Javascript,則不會發生任何事情。

你必須使用一個<a>元素,或者只是一些類似於一個<a>元素?

另外值得一提的是看看AjaxLink。它允許您輕鬆使用<a>元素來執行AJAX POST。

7

我想,如果你需要的東西是一個行動,將在服務器端做一些「永久」的東西。例如,刪除數據庫中的對象。

下面是使用一個鏈接,發佈執行刪除的完整例子:(recomended讀取反正) http://www.squarewidget.com/Delete-Like-a-Rock-Star-with-MVC3-Ajax-and-jQuery

從以前的鏈接:

在視圖中刪除鏈接:

@Ajax.ActionLink("Delete", "Delete", "Widget", 
       new {id = item.Id}, 
       new AjaxOptions { 
        HttpMethod = "POST", 
        Confirm = "Are you sure you want to delete this widget?", 
        OnSuccess = "deleteConfirmation" 
       }) 

JS的位:

function deleteConfirmation(response, status, data) { 

     // remove the row from the table 
     var rowId = "#widget-id-" + response.id; 
     $('.widgets').find(rowId).remove(); 

     // display a status message with highlight 
     $('#actionMessage').text(response.message); 
     $('#actionMessage').effect("highlight", {}, 3000); 
    } 
+1

偉大的鏈接。希望我可以將2個答案標記爲正確的,所以希望upvote就足夠了。謝謝 – wgpubs 2012-07-17 04:45:45

+0

該鏈接不再工作 – 2013-04-26 08:16:16

+0

鏈接已更新... – Romias 2013-04-26 12:52:08

相關問題