为url.action发布帖子?

Rod*_*Rod 13 asp.net-mvc

这是我的Controller类中的一行代码:

return JavaScript(String.Format("window.top.location.href='{0}';", Url.Action("MyAction", "MyController")))
Run Code Online (Sandbox Code Playgroud)

有没有办法让它使用的verb=post版本MyAction

Oun*_*ess 19

我自己遇到了同样的问题,并使用data-属性和一些jQuery 解决了它.这样做的好处是,当您将鼠标悬停在链接上时,即使它执行POST,您仍然可以获得正确的URL.请注意,Html.BeginForm如果用户点击回车键,则包含默认操作.

HTML(ASP.NET MVC3 Razor)

@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>
}
Run Code Online (Sandbox Code Playgroud)

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();
    });
});
Run Code Online (Sandbox Code Playgroud)


Mat*_*cey 16

您只需导航到其他网址即可使用POST.(这是您通过更改location.href所做的.)

使用POST仅在提交一些数据时才有意义.从您的代码中不清楚实际发布的数据是什么.

如果您真的想通过javascript发起POST,请尝试使用它来提交表单.