提问人:Rod 提问时间:2/10/2010 最后编辑:Phate01Rod 更新时间:4/13/2015 访问量:83166
为 url.action 发布操作?
post action for url.action?
问:
这是我的 Controller 类中的一行代码:
return JavaScript(String.Format("window.top.location.href='{0}';", Url.Action("MyAction", "MyController")))
有没有办法让它使用版本?verb=post
MyAction
答:
20赞
Matt Lacey
2/10/2010
#1
您不能通过简单地导航到其他 URL 来使用 POST。(这是通过更改 location.href 来执行的操作。
只有在提交某些数据时才有意义。从您的代码中不清楚哪些数据实际上将被 POST 处理。
如果您真的想通过 javascript 发起 POST,请尝试使用它来提交表单。
3赞
Seth Petry-Johnson
2/10/2010
#2
继续 Matt Lacey 的回答,您的操作可能会返回一些 Javascript 来执行此操作:
- 使用 jquery 向 DOM 添加新表单
- 使用 jquery 提交新添加的表单
像这样的东西:(未经测试的代码)
var urlHelper = new UrlHelper(...);
var redirectUrl = urlHelper.Action("MyAction", "MyController");
var redirectScript = String.Format(@"
var formTag = $('<form action=""{0}"" method=""post"" id=""redirectForm""></form>');
$(body).append(formTag);
formTag.submit();"
, redirectUrl
);
return JavaScript(redirectScript);
20赞
Oundless
6/7/2011
#3
我自己也遇到了同样的问题,并使用属性和一些jQuery解决了它。这样做的好处是,当您将鼠标悬停在链接上时,您仍然可以获得正确的 URL,即使它执行 POST。 请注意,包含默认操作,以防用户按回车键。data-
Html.BeginForm
HTML (ASP.NET MVC3 剃刀)
@using (Html.BeginForm("Quick", "Search"))
{
<input type="text" name="SearchText" />
<a href="@Url.Action("Quick", "Search")" data-form-method="post">Search</a>
<a href="@Url.Action("Advanced", "Search")" data-form-method="post">Advanced</a>
}
jQuery的
$("a[data-form-method='post']").click(function (event) {
event.preventDefault();
var element = $(this);
var action = element.attr("href");
element.closest("form").each(function () {
var form = $(this);
form.attr("action", action);
form.submit();
});
});
下一个:如何获取每月的最后一天
评论