MVC4 Ajax请求

时间:2012-07-20 08:47:18

标签: jquery

这是我的Controller类

[HttpGet]
    public ActionResult ContactUs()
    {
        if (Request.IsAjaxRequest())
        {
            return PartialView("_ContactUs");
        }

        return View();
    }

我的问题返回PartialView(“_ ContactUs”); 没有在MVC4中执行直接返回View();  正在执行

1 个答案:

答案 0 :(得分:1)

您需要使用操作方法选择器来区分Ajax和非Ajax请求。因此,实现ActionMethodSelectorAttribute并使用该属性修饰您的action方法(true)。请参阅下面的示例代码。

[HttpGet]
[MyAjax(true)]
public ActionResult ContactUs()
{
    if (Request.IsAjaxRequest())
    {
        return PartialView("_ContactUs");
    }

    return View();
}

//.. 

public class MyAjaxAttribute : ActionMethodSelectorAttribute
    {
        private readonly bool _ajax;
        public AjaxAttribute(bool ajax)
        {
            _ajax = ajax;
        }

        // Determines whether the action method selection is valid for the specified controller context
        public override bool IsValidForRequest(
                               ControllerContext controllerContext,
                               MethodInfo methodInfo)
        {
            return _ajax == controllerContext.HttpContext.Request.IsAjaxRequest();
        }
    }