2011-03-24 56 views

回答

11

操作方法返回一個實例,該實例包含框架下一步需要執行的命令。這提供了一種方法,用於延遲執行框架/管道代碼,直到操作方法完成後,而不是在操作方法內。

ActionResult抽象類表示,並且該指令有擁有的ExecuteResult方法,該方法是通過具體的命令,如ViewResultJsonResult實施:

enter image description here

+0

除了延遲執行,還有其他好處嗎? – Ricky 2011-03-24 10:31:25

+1

@Ricky,延遲執行是[命令模式](http://en.wikipedia.org/wiki/Command_pattern)背後的主要思想:*在面向對象編程中,命令模式是一種設計模式,對象用於表示和封裝稍後調用方法所需的所有信息*。 – 2011-03-24 10:42:53

+0

@Dimitrow:感謝您的參考 – Ricky 2011-03-27 14:27:01

1

的的ActionResult不是命令模式的實現的。控制器上的操作與命令最爲接近,ActionResult通常是對視圖的更改。該命令更新模型,ActionResults不更新模型。我使用ActionFilter實現了MVC中的命令模式,並將Action,Controller名稱和參數存儲在歷史記錄中(例如:列表<>)。一個控制器實現了Undo和Redo,而所有其他控制器遵循所有動作前綴爲Do_和Undo_的約定。或者,你可以通過一個額外的布爾?撤消參數。

在MVC中執行Command有很多方法,但ActionResult與它無關。