【问题标题】:how to know if the request is ajax in asp.net mvc?如何知道请求是否是asp.net mvc中的ajax?
【发布时间】:2011-04-21 07:42:01
【问题描述】:

任何人我怎么知道请求是否是 ajax ? (我正在使用 jquery 进行 ajax)

【问题讨论】:

  • 您也可以使用 Fiddler 来查看请求。这样做你会学到很多东西。

标签: asp.net asp.net-mvc ajax


【解决方案1】:

如果您使用的是更高版本的 MVC,还有 Request.IsAjaxRequest。我没有第 1 版,所以我不能说它是否在第 1 版中。

如果您需要在 Global.asax.cs 中进行此检查,请尝试以下操作: new HttpRequestWrapper(Request).IsAjaxRequest()

【讨论】:

  • @BuildStarted 我需要在 Global.asax.cs 中进行检查,所以这对我没有帮助
  • @BuildStarted 在 Application_Error 中不可用
  • 是的,你是对的。这是因为它在 MVC 之外并且不使用HttpRequestBase。我没有需要,所以我没有看得太深。感谢您的提醒。
  • 新的 HttpRequestWrapper(Request).IsAjaxRequest();
  • 顺便说一句:如果您在自定义授权过滤器中,请使用此方法在请求上获取 IsAjaxRequest 方法:filterContext.HttpContext.Request.IsAjaxRequest
【解决方案2】:

jQuery 进行的所有 AJAX 调用都将添加一个标头以表明它是 AJAX。要检查的标头是X-Requested-With,如果是AJAX调用,则值为XMLHttpRequest

请注意,AJAX 请求是普通的 GET 或 POST,因此除非您(或您的 AJAX 库,如 jQuery)在请求中添加额外的标头,否则无法确定它是否是 AJAX。

【讨论】:

  • @Omu: Request.Headers["X-Requested-With"] 或类似的。检查 MSDN。标头总是与请求相关。
【解决方案3】:

它适用于 ASP.NET MVC 3

if (Request.IsAjaxRequest())
{
     // ajax request handled
}

【讨论】:

  • 这在 Application_Error 中不可用
  • 这在 Application_BeginRequest 中不可用
  • 在 Global.asax 中:new HttpRequestWrapper(Request).IsAjaxRequest()
猜你喜欢
  • 2014-05-06
  • 2011-11-24
  • 2017-06-16
  • 2013-05-08
  • 2011-08-20
  • 1970-01-01
  • 2013-07-13
  • 2012-04-15
  • 1970-01-01
相关资源
最近更新 更多