2012-07-20 116 views
0

這是我的控制器類MVC4 Ajax請求

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

     return View(); 
    } 

我的問題回報PartialView( 「_聯繫我們」);沒有在MVC4中執行,直接返回View(); 正在執行中

+0

什麼是您用來調用此操作的JavaScript代碼 – stevethethread 2012-07-20 09:02:42

回答

1

您需要使用操作方法選擇器來區分Ajax請求和非Ajax請求。因此,實現ActionMethodSelectorAttribute並使用該屬性修飾您的操作方法(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(); 
     } 
    }