我有一個控制器有幾個動作,都返回一組相同的數據。與其將每個操作中的數據添加到ViewBag中,是否存在某種模式或屬性,或者我可以調用或設置爲將相同的數據添加到viewdata或viewbag中以執行每個操作,或者執行get每個視圖中的相同數據,而無需在每個操作中調用該方法?有沒有辦法在特定控制器中爲每個ASP.Net MVC操作返回相同的數據?
8
A
回答
14
你在找什麼是ActionFilter
,然後覆蓋OnActionExecuting
。這裏是追加當前登錄的用戶的ViewBag我ActionFilters之一:
public class AppendUserActionFilterAttribute : ActionFilterAttribute
{
...
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
User currentUser = _sessionManager.CurrentUser;
dynamic viewBag = filterContext.Controller.ViewBag;
viewBag.CurrentUser = currentUser;
}
...
}
然後你需要應用的屬性,無論你想這種情況的發生。如果將它附加到一個動作中,該動作將在ViewBag中獲得添加的條目。如果你將它附加到控制器上,它的所有動作都會得到它。如果你把它添加到一個基本的控制器,並有所有的控制器繼承它,然後在整個應用程序自己的行爲得到它
[AppendUserActionFilter]
public class MyController : Controller {
public ActionResult Foo() {
....
}
}
3
一個可行的解決方案,可以通過構造函數分配控制器的
public class HomeController : Controller
{
public HomeController()
{
ViewData["Common"] = "Some Data";
}
}
它將可用於HomeController中的所有操作
+0
這不起作用 – 2016-01-07 15:06:43
相關問題
- 1. ASP.Net MVC:在不同控制器中的相同操作名稱
- 2. 從MVC控制器返回數據返回相同的視圖
- 3. 限制爲特定視圖的ASP.NET MVC控制器操作
- 4. 在asp.net中調用相同的控制器操作mvc
- 5. GET和POST到ASP.NET MVC中的相同控制器操作
- 6. 在pylongs中,有沒有辦法循環所有的控制器和操作?
- 7. 在asp.net MVC 3 applciation返回從同一個控制器動作
- 8. 有沒有辦法在ASP.NET MVC3站點中迭代所有控制器/動作?
- 9. 控制器沒有返回json數據到視圖在asp.net MVC Ajax
- 10. 沒有控制器或操作名稱的Asp.net mvc路由
- 11. 有沒有辦法在控制器/操作中禁用視圖幫助器?
- 12. 將視圖中的特定表數據返回給控制器? asp.net MVC
- 13. 保護返回JSON的ASP.NET MVC控制器操作
- 14. 有沒有辦法在一個getter中返回三個容器?
- 15. 有沒有辦法在控制器中獲取PartialView HTML內容?
- 16. ASP.NET Web API操作 - 每個控制器只有一個GET?
- 17. asp.net mvc 3從控制器操作返回消息ajax
- 18. Asp.Net MVC控制器操作返回動畫GIF問題
- 19. 根據參數從任何ASP.NET MVC控制器操作返回JSON
- 20. 有沒有辦法在rails 3.1中修復單個控制器?
- 21. 自定義路由ASP.NET MVC在每個控制器中設置默認操作
- 22. 有沒有辦法強制ASP.NET Web API返回純文本?
- 23. 有沒有辦法使用asp.net mvc Razor ViewEngine製作@section選項?
- 24. 有沒有辦法在控制器方法之前檢查控制器參數?
- 25. 表單操作沒有打到MVC控制器方法
- 26. 有沒有辦法將不同的過濾器應用於控制器的操作,而不是父控制器在Rails 3中的操作?
- 27. ASP.NET MVC中有沒有辦法處理不同的Response.StatusCode值?
- 28. 有沒有辦法從Python返回一個數據框到R?
- 29. 是否有可能返回特定控制器操作的輸出(html)?
- 30. 有沒有辦法強制添加到相同控件的擴展器的特定順序?
ActionFilterAttribute存在於兩個名稱空間中:System.Web.Mvc和System.Web.Http.Filters。有什麼區別嗎?哪一個應該使用?我認爲這將有助於避免混淆新手(像我一樣)。 – 2014-05-07 09:47:19