2010-12-05 85 views

回答

8

如果通過Ajax加載的諧音,那麼你可以檢查請求的HTTP標頭HTTP_X_REQUESTED_WITH存在和其價值等於XMLHttpRequest

當一個請求通過頭的瀏覽器發出不存在

這裏是一個非常簡單的實現一個Action Filter屬性,沒有工作適合你

public class CheckAjaxRequestAttribute : ActionFilterAttribute 
{ 
    private const string AJAX_HEADER = "X-Requested-With"; 

    public override void OnActionExecuting(ActionExecutingContext filterContext) { 
     bool isAjaxRequest = filterContext.HttpContext.Request.Headers[AJAX_HEADER] != null; 
     if (!isAjaxRequest) { 
      filterContext.Result = new ViewResult { ViewName = "Unauthorized" }; 
     } 
    } 
} 

你可以用它來的裝修要檢查任何行動,如果該請求是一個Ajax請求

[HttpGet] 
[CheckAjaxRequest] 
public virtual ActionResult ListCustomers() { 
} 
+0

你能告訴我我怎麼會做這樣的文章? – 2010-12-06 19:34:10

+0

很好,沒關係我發現它Request.Headers.Get(「X-Requested-With」); o) – 2010-12-06 19:53:47

4

我相信[ChildActionOnly]屬性是你在找什麼對於。

[ChildActionOnly] 
public ActionResult Edit(int? id) 
{ 
    var item = _service.GetItem(id ?? 0); 
    return PartialView(new EditModel(item)) 
} 

菲爾哈克有使用它here