是否可以強制@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. asp.net mvc - [HttpPost/HttpGet]與[AcceptVerbs(HttpVerbs.Post/Get)]
- 2. 部分視圖HttpPost被調用而不是HttpGet
- 3. ASP.Net MVC ActionLink如何工作?
- 4. 與asp.net mvc beta的強類型actionlink?
- 5. 點擊提交按鈕調試指向[httpget]而不是[httppost]
- 6. ASP.Net MVC的ActionLink
- 7. Asp.Net MVC ActionLink
- 8. HttpPost vs MVC中的HttpGet屬性:爲什麼要使用HttpPost?
- 9. ASP.NET MVC 3路由中斷ActionLink功能
- 10. ASP.NET MVC 5 HttpPost
- 11. 如何在ASP.NET MVC 3控制器中執行錯誤處理?
- 12. Html.BeginForm後要HTTPGET行動,而不是HttpPost在IE中,罰款Chrome和Firefox
- 13. 如何將HttpGet轉換爲HttpPost?
- 14. 測試ASP.NET MVC控制器Httpget
- 15. XML Schema強制執行子元素而不強制執行標記名稱
- 16. ASP.NET菜單強制單行而不是換行
- 17. 如何在_layout.cshtml中傳遞參數actionLink asp.net MVC 3
- 18. asp.net mvc validate [HttpPost] ActionResult()
- 19. 如何強制MVC路由到Home/Index而不是根目錄?
- 20. 如何禁用ASP.NET MVC 3中的HttpPost操作中的驗證?
- 21. ASP.NET MVC - 執行控制器操作而不重定向
- 22. 差異btwn HttpPost&HttpGet在android
- 23. 如何測量ASP.NET MVC ActionLink的OnSuccess?
- 24. 如何強制Default.aspx的,而不是www.domain.com
- 25. 如何在ASP.NET MVC中限制對[HttpGet] ActionResult的訪問?
- 26. MVC 3在HttpPost行動拆分參數
- 27. 強制Id和UserName在ASP.NET MVC 3中是唯一的模型
- 28. 條件ActionLink view的不渲染(asp.net的MVC 3)
- 29. jQGrid asp.net mvc 3從零開始執行
- 30. 在ASP.NET MVC 3中執行PUT方法
沒有你他們不能僅用於GET – VJAI 2012-07-15 06:20:24