只是好奇,他們聽起來很相似。 ExecuteCore()與OnActionExecuting(ActionExecutingContext filterContext)之間有什麼區別?ExecuteCore()vs OnActionExecuting(ActionExecutingContext filterContext)?
在什麼情況下比另一種更有用?
只是好奇,他們聽起來很相似。 ExecuteCore()與OnActionExecuting(ActionExecutingContext filterContext)之間有什麼區別?ExecuteCore()vs OnActionExecuting(ActionExecutingContext filterContext)?
在什麼情況下比另一種更有用?
事實上,他們在MVC執行流水線只是不同點。
ExecuteCore由 MvcHandler控制器本身 被實例之後被調用。到目前爲止,MVC 甚至不知道控制器將如何調用其操作。 你可以重寫標準 控制器的ExecuteCore來調整其整體執行過程 一點點。
OnActionExecuting是一個完全的 不同的故事。它在調用 ControllerActionInvoker時調用 動作過濾器。由 點MVC已經知道行動 存在,調用它,獲得所有 過濾器(通常定義爲 屬性)和整體執行 管道的 特定時刻(OnActionExecuting, OnActionExecuted,執行它OnResultExecuting 等)。
這取決於您在決定使用哪個擴展點時要實現的目標。在衍生 控制器
ExecuteCore在控制器初始化之後被調用,而OnActionExecuting在執行管道的後期階段發生,並在調用控制器動作之前立即被調用。在第二種方法,你可以直接例如重定向到一些其他的動作操縱行動的ActionResult和短路執行:
filterContext.Result = ...
什麼樣的場景適合每種方法?我看到了一個本地化的例子,它使用ExecuteCore來獲取語言/文化設置。我已經使用OnActionExecuting添加一些常見的viewdata,所有操作都使用......只是好奇。謝謝! – Chaddeus 2010-12-15 00:55:53