情况的快速摘要:
在我看来,我有这段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方法。我环顾四周,发现了一些类似的问题,但是没有一种解决方案适合我。
UPDATE讲得太早了,记得您需要jQuery.Ajax.Unobtrusive http://www.nuget.org/packages/jQuery.Ajax.Unobtrusive/包
如果您安装它并在您认为它应该在工作中引用它,那它是我进行的OOTB测试:)
我自己做了一个快速测试,看来您不能使用Ajax.ActionLink发出POST请求,即使您在AjaxOptions中设置了POST,它也执行GET。如果使用fiddlr监视流量,则可以看到此信息。
您还可以使用适用于Chrome的Postman扩展程序对其进行测试,您会看到action方法实际上在您对其进行POST时表现出应有的表现。但是您会收到404,因为它实际上执行的是GET
如果是我,我将使用jQuery进行发布。您可以在此处查看更多信息 http://api.jquery.com/jquery.ajax/
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句