如何测试当前请求是否为Controller中的ajax请求?

时间:2010-09-01 10:45:51

标签: c# jquery asp.net-mvc ajax controller

在某些情况下,我将jQuery.get()请求发送到Action方法,在其他情况下,它是一个浏览器请求。我有什么方法可以区分它们,这样我可以相应地返回不同的动作结果吗?

3 个答案:

答案 0 :(得分:24)

我通常使用旧的:

if (Request.IsAjaxRequest())

控制器内部。

答案 1 :(得分:2)

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

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

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

我非常建议每位MVC开发者观看HaaHa节目:http://live.visitmix.com/MIX10/Sessions/FT05

答案 2 :(得分:2)

如果它们是您想要返回的不同操作,那么您可以根据请求重定向到另一个操作的通用操作

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