如何在asp.net mvc中使用ajax检测页面被调用的时间?
发布于 2010-01-18 23:42:04
根据专业的ASP.NET MVC1.0书籍,MVC AJAX库将插入一个名为"X-Requested- with“的表单字段,其值为"XMLHttpRequest”。
然后,您可以在System.Web.Mvc中使用扩展方法,这意味着您可以简单地调用Request.IsAjaxRequest()
,并获得一个简单的true或false判断这是否是AJAX请求。
发布于 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调用。
发布于 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"));
}
因此,如果你想手动检查它(不推荐),你必须同时检查两个。
https://stackoverflow.com/questions/2087021
复制相似问题