首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >ajax mvc:如何使用asp.net检测页面何时被调用

ajax mvc:如何使用asp.net检测页面何时被调用
EN

Stack Overflow用户
提问于 2010-01-18 23:24:54
回答 5查看 9.8K关注 0票数 17

如何在asp.net mvc中使用ajax检测页面被调用的时间?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2010-01-18 23:42:04

根据专业的ASP.NET MVC1.0书籍,MVC AJAX库将插入一个名为"X-Requested- with“的表单字段,其值为"XMLHttpRequest”。

然后,您可以在System.Web.Mvc中使用扩展方法,这意味着您可以简单地调用Request.IsAjaxRequest(),并获得一个简单的true或false判断这是否是AJAX请求。

票数 35
EN

Stack Overflow用户

发布于 2010-01-18 23:34:01

没有特定的方法来确定该调用是由javascript还是直接在浏览器中进行的,因为它是常规的http调用。

您可以向ajax调用添加一个头以将其与其他调用区分开来,或者可能向仅用于ajax调用的查询字符串添加一个参数。

ASP.NET MVC ajax确实添加了这样一个header - X-Requested-With: XMLHttpRequest,您可以使用它来嗅探这是由mvc ajax库进行的ajax调用。但是,如果您使用的是jQuery或您自己的手动ajax调用,则不会设置此项。此外,其他客户机可能会伪造这个头(例如,使用WebClient ),因此发现它并不能保证已经进行了ajax调用。

票数 5
EN

Stack Overflow用户

发布于 2010-01-19 02:44:39

检查请求是否是ajax请求的最好方法是检查Request.IsAjaxRequest()。在幕后,MVC框架会检查请求参数或请求头中的ajax请求。ASP.Net MVC源代码中的代码是:

    public static bool IsAjaxRequest(this HttpRequestBase request) {
        if (request == null) {
            throw new ArgumentNullException("request");
        }

        return (request["X-Requested-With"] == "XMLHttpRequest") || ((request.Headers != null) && (request.Headers["X-Requested-With"] == "XMLHttpRequest"));
    }

因此,如果你想手动检查它(不推荐),你必须同时检查两个。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2087021

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档