2011-03-24 32 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与它无关。