3

對AJAX調用的ActionResult我想到的兩個選項單獨的控制器3

  1. 將在 控制器最適合自己的功能
  2. 的actionresults讓阿賈克斯單獨的控制器調用

在第二種方法中,我可以使用單獨的文件在功能上劃分控制器,並在每個文件中使用部分ajaxcontroller類。 如果有一些ActionFilter屬性需要應用於操作結果而不是ajax操作結果,例如Authorize屬性可能會應用於正常操作結果,則第二個選項可能會有所幫助。我可以在ajax actionresults上使用Ajaxonly屬性來保護它們
哪個選項更適合您

回答

5

爲什麼要這樣做?對我而言,控制器綁定到某個模型,而不是某種類型的輸出格式。

public ActionResult Users() 
{ 
    var users = _repository.Find(); 
    var viewModel = Mapper.Map(users); // automapper or similar 
    return Request.IsAjax() ? Json(viewModel) : View(viewModel); 
} 

爲了回答您的更新

這是更好地創建一個CustomAuthorizeAttribute來檢查,如果它是一個Ajax請求或定期請求,並做適當的授權。您的控制器不應該知道授權是如何進行的。

+0

我所有的控制器都從基本控制器繼承,有一些屬性應用於此。 ajax需要這些屬性。 – Tassadaque 2011-06-13 07:56:40

+0

更新您的問題與具體例子,讓我給一個更準確的答案。 – jgauffin 2011-06-13 07:58:14

+0

問題已更新 – Tassadaque 2011-06-13 08:35:03