这是我的Controller类
[HttpGet]
public ActionResult ContactUs()
{
if (Request.IsAjaxRequest())
{
return PartialView("_ContactUs");
}
return View();
}
我的问题返回PartialView(“_ ContactUs”); 没有在MVC4中执行直接返回View(); 正在执行
答案 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();
}
}