Ajax.ActionLink POST在ASP.NET MVC 5中不起作用

时间:2014-01-08 10:12:13

标签: ajax asp.net-mvc-5

情况的快速摘要:

在我的视图中,我有一段Razor代码:

@{
ViewBag.Title = "Index";

AjaxOptions options = new AjaxOptions();
options.HttpMethod = "POST";
}

...

@Ajax.ActionLink("Linkname", "CreateChallenge", new { challengedId = Model.UserId },options);

比在我的控制器中:

[Authorize]
[HttpPost]
    public string CreateChallenge(string challengedId)
    {
        ChallengeRepository.CreateChallenge(challengedId);
        return "Sendend!";
    }

当我点击链接时出现“找不到资源”错误,但是当我删除[HttpPost]属性时,一切正常。但我想要一个POST方法。我环顾四周,发现了一些类似的问题,但没有一个解决方案适合我。

1 个答案:

答案 0 :(得分:8)

<强>更新 说得太快,记得你需要jQuery.Ajax.Unobtrusive http://www.nuget.org/packages/jQuery.Ajax.Unobtrusive/

如果你安装它并在你的视图中引用它应该有效,它是我的OOTB测试:)

我自己做了一个快速测试,似乎你无法使用Ajax.ActionLink发出POST请求,即使你在AjaxOptions中设置POST也会执行GET。如果您使用fiddlr来监控流量,则可以看到此信息。

<击>

您还可以使用Chrome的Postman扩展程序对其进行测试,您会看到操作方法实际上与POST时的行为方式相同。但是你得到404因为它实际上是GET

如果是我,我会使用jQuery来发布帖子。您可以在此处查看更多内容http://api.jquery.com/jquery.ajax/

相关问题