【问题标题】:Ajax.ActionLink POST doesn't work in ASP.NET MVC 5Ajax.ActionLink POST 在 ASP.NET MVC 5 中不起作用
【发布时间】:2014-01-26 08:54:19
【问题描述】:

快速总结一下情况:

在我看来,我有这段 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 方法。我环顾四周,发现了一些类似的问题,但没有一个解决方案适合我。

【问题讨论】:

    标签: ajax asp.net-mvc-5


    【解决方案1】:

    更新 说得太早了,记得你需要 jQuery.Ajax.Unobtrusive http://www.nuget.org/packages/jQuery.Ajax.Unobtrusive/

    如果您安装它并在您认为它应该可以工作的情况下引用它,我的 OOTB 测试就完成了 :)

    我自己做了一个快速测试,看来你不能使用 Ajax.ActionLink 发出 POST 请求,即使你在 AjaxOptions 中设置了 POST,它也会执行 GET。如果您使用 fiddlr 监控流量,您可以看到这一点。

    你也可以使用 Chrome 的 Postman 扩展来测试它,你会看到当你 POST 到它时,action 方法的行为实际上是应该的。但是你得到了 404,因为它实际上做了一个 GET

    如果是我,我会使用 jQuery 来发帖。你可以在这里看到更多http://api.jquery.com/jquery.ajax/

    【讨论】:

      猜你喜欢
      • 2012-02-05
      • 2021-08-10
      • 2016-07-29
      • 2023-03-08
      • 1970-01-01
      • 1970-01-01
      • 2023-03-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多