是否可以強制@Html.ActionLink()
做POST
而不是GET
?如果是這樣,怎麼樣?ASP.NET MVC 3:如何強制ActionLink執行HttpPost而不是HttpGet?
回答
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
}
我會做的是包裝你周圍的HTML表單
@using(Html.BeginForm("YourAction","YourController", FormMethod.Post)){
<button>Hello</button>
}
而不是使用鏈接,您可能需要使用一個按鈕。
如果你真的想用一個鏈接,你可能需要一些JavaScript
事情是這樣的:
$("#idOfYourLink").click(function(){
var form = $(this).parents('form:first');
form.submit();
});
如果你覺得...有在HTML鏈路沒有標籤,做了POST。這就是爲什麼你不能強制鏈接進行POST(而且沒有任何意義)。 要使用「POST」,你應該「發佈」一些東西。那東西應該是一種形式,或者你可以使用AJAX的javascript函數進行POST。 無論如何,如果你需要發佈沒有發佈任何東西,你應該檢查你的資源模型,有些東西很臭。
這實際上在Rails社區中非常常見並且完全可以接受,例如作爲de lete物體。 – wgpubs 2012-07-17 04:43:50
不可能讓<a>
元素執行POST到Web服務器。
您可以使用Javascript捕獲單擊事件,停止導航並執行AJAX POST到服務器,但是如果用戶禁用Javascript,則不會發生任何事情。
你必須使用一個<a>
元素,或者只是一些類似於一個<a>
元素?
另外值得一提的是看看AjaxLink
。它允許您輕鬆使用<a>
元素來執行AJAX POST。
我想,如果你需要的東西是一個行動,將在服務器端做一些「永久」的東西。例如,刪除數據庫中的對象。
下面是使用一個鏈接,發佈執行刪除的完整例子:(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. MVC HttpGet和HttpPost
- 2. asp.net mvc - [HttpPost/HttpGet]與[AcceptVerbs(HttpVerbs.Post/Get)]
- 3. HttpPost和HttpGet不工作?
- 4. ASP.Net MVC ActionLink如何工作?
- 5. 強類型ActionLink的助手與地區在ASP.net MVC 3
- 6. 部分視圖HttpPost被調用而不是HttpGet
- 7. 與asp.net mvc beta的強類型actionlink?
- 8. 強類型ActionLink在Asp.Net MVC 2中?
- 9. MVC 3 - ActionLink
- 10. MVC 3 [HttpPost]
- 11. 點擊提交按鈕調試指向[httpget]而不是[httppost]
- 12. Asp.Net MVC ActionLink
- 13. ASP.Net MVC的ActionLink
- 14. HttpPost不執行
- 15. 基於繼承的actionlink asp.net mvc 3
- 16. ASP.NET MVC 3路由中斷ActionLink功能
- 17. ASP.NET MVC 5 HttpPost
- 18. 如何在ASP.NET MVC 3控制器中執行錯誤處理?
- 19. HttpPost vs MVC中的HttpGet屬性:爲什麼要使用HttpPost?
- 20. Html.BeginForm後要HTTPGET行動,而不是HttpPost在IE中,罰款Chrome和Firefox
- 21. jQuery的.load()函數打我<HttpPost()>行動,而不是我的<HttpGet()>
- 22. 如何強制按鈕執行完整回發而不是異步回發
- 23. ActionButton而不是ActionLink
- 24. 測試ASP.NET MVC控制器Httpget
- 25. .net webapi HttpGet vs HttpPost。爲什麼HttpGet?
- 26. ASP.NET Web服務 - 將方法限制爲HttpGet或HttpPost
- 27. 如何將HttpGet轉換爲HttpPost?
- 28. 如何在_layout.cshtml中傳遞參數actionLink asp.net MVC 3
- 29. 如何從ActionLink asp.net Mvc 3調用jquery函數?
- 30. XML Schema強制執行子元素而不強制執行標記名稱
沒有你他們不能僅用於GET – VJAI 2012-07-15 06:20:24