首页 文章

Request.IsAjaxRequest返回false

提问于
浏览
4

我有一个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

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

  • 1

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

  • 0

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

  • 3

相关问题