对于源自Ajax.ActionLink()的请求,Request.IsMvcAjaxRequest()方法是否返回true?

时间:2008-11-14 02:39:05

标签: asp.net-mvc

我有一个控制器操作正在由使用'Ajax.ActionLink()'创建的链接执行,问题是我在操作中无法告诉该请求是一个AJAX请求,因为{{1}总是返回false。

Request.IsMvcAjaxRequest()无法使用Request.IsMvcAjaxRequest()生成的请求吗?

以下是我用来生成链接的代码:

Ajax.ActionLink()

当我查看IsMvcAjaxRequest extension method的代码时,它看起来只适用于AJAX Forms而不适用于AJAX ActionLinks。

更新11/13

如果我将AjaxOptions中的HttpMethod更改为POST,一切都很好。任何人都知道如何在使用DELETE方法时使Request.IsMvcAjaxRequest()正常工作?

2 个答案:

答案 0 :(得分:2)

删除时没有表单参数。尝试添加__MVCASYNCPOST = true作为路由数据(URL中的查询参数)

答案 1 :(得分:0)

因为“IsMvcAjaxRequest”只返回(request [“__ MVCASYNCPOST”] == true),并检查查询字符串,表单和cookie ...它应该与POST,GET等一起使用。

尝试在你的代码中加入一个断点,并确保它正在命中POST,然后更改为“DELETE”,看看它是否正在击中你的代码(因为这应该有效)。可能是你有一个只允许“POSTS”通过的ActionFilter(或其它阻止行为的东西)。