是否可以强制@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