Request.IsAjaxRequest返回false

时间:2009-11-09 18:28:55

标签: jquery asp.net-mvc

我有一个MVC项目,其中有一个带有提交按钮的表单。我添加了一个jquery客户端处理程序,拦截表单提交事件。 javascript函数调用与没有javascript时调用的相同MVC操作。

 $("form[action ='/List/CreateItem']").submit(
            function() {
                $.post($(this).attr("action"), $(this).serialize(), function(response) { $("#results").html(response); });
                return false;
            }
            );

在调用的MVC操作中,我测试Request.IsAjaxRequest以决定是返回视图还是返回JSON结果。我的问题是Request.IsAjaxRequest返回false,即使我知道调用是从jquery函数进行的。 (我知道这是因为如果我在jquery函数中注释掉$ .post行并且只留下返回false行,则没有任何反应。如果我取消注释该行,则执行该操作 - 但它返回视图,因为IsAjaxRequest是是的。)

此行应该导致Request.IsAjaxRequest为真吗?

4 个答案:

答案 0 :(得分:3)

Request.IsAjaxRequest属性应该反映X-Requested-With HTTP标头的存在。这个标题实际上是否已发送到服务器?正如James建议的那样,尝试使用Fiddler或类似的代理服务器替代方案对此进行分析。

答案 1 :(得分:1)

好吧......我道歉。我不知道发生了什么变化,但现在IsAjaxRequest正在返回true。我比较了上面发布的代码和现在正在执行的代码,我看到没有区别。我之前反复弄错了,现在我反复得到了真相。当然我错过了一些东西,但我没有看到它。

答案 2 :(得分:0)

我不确定区别是什么,但是确定是否存在差异的可能方法是使用像Fiddler(www.fiddlertool.com)这样的HTTP分析工具,并查找两个调用之间可能存在的差异。 / p>

答案 3 :(得分:0)