如何测试当前请求是否是控制器中的ajax请求?

如何测试当前请求是否是控制器中的ajax请求?

问题描述:

在某些情况下,我向操作方法发送jQuery.get()请求,在其他情况下,它是浏览器请求。我有什么办法可以区分它们,因此我可以相应地返回不同的操作结果?如何测试当前请求是否是控制器中的ajax请求?

我一般用旧:

if (Request.IsAjaxRequest()) 

控制器内。

+0

干杯戴夫 - 一切顺利;) – 2010-09-01 19:29:39

+0

有人可以向我解释这种魔法是如何工作的? 编辑:找到它。 https://stackoverflow.com/questions/4885893/how-to-differentiate-ajax-requests-from-normal-http-requests – Pangamma 2017-08-17 23:33:51

如果您确实想要返回不同的操作结果,请使用不同的操作。但是,如果它必须是相同的,你可以改变网址,并用它发送一个额外的参数一样

htt://mysite.com/controller/action?ajax=ajax 

除此之外我不会建议使用Get对AJAX。关于安全性,最好使用$.post

我非常建议每MVC开发观看HaaHa显示:http://live.visitmix.com/MIX10/Sessions/FT05

+0

我的请求是幂等的,所以我不想做的职位一般的动作不同的动作。 http://en.wikipedia.org/wiki/Idempotent – DaveDev 2010-09-01 17:46:49

如果他们要返回,那么你可以有一个重定向到另一个动作取决于请求

public ActionResult GetData() 
{ 
    if(Request.IsAjaxRequest()) 
     return RedirectToAction("AjaxRequest"); 
    else 
     return RedirectToAction("NonAjaxRequest"); 
} 
+0

迟到+ 1你在这里,但你的答案实际上可能是一个更好,更丰富的信息一个比我的(从那些年前:))。所以,希望DaveDev能在某个时候出现并改变他的决定! (顺便说一下,你在那里使用的模式在过去的时代也是如此),所以绝对是基于mvc2/3的一个很好的选择。保重 - 吉姆 – 2013-05-10 20:30:49