ASP.NET MVC的ActionResult如何实现命令模式

时间:2011-03-24 06:39:08

标签: asp.net-mvc design-patterns

请参阅“Pro ASP.NET MVC 2 Framework”,ActionResult是命令模式的实现。我想知道这个模式是如何实现的?你能给我发一些光吗?

谢谢。

2 个答案:

答案 0 :(得分:11)

action方法返回一个实例,该实例包含框架接下来需要执行的命令。这提供了一种延迟框架/管道代码执行的方法,直到动作方法完成,而不是在动作方法中。

此命令由ActionResult抽象类表示,并拥有ExecuteResult方法,该方法由ViewResultJsonResult等具体命令实现:

enter image description here

答案 1 :(得分:1)

ActionResult根本不是命令模式的实现。 Controller上的Action最接近命令,ActionResult通常是对View的更改。该命令更新模型,ActionResults不更新模型。

我通过使用ActionFilter在MVC中实现了命令模式,并在历史记录中存储了Action,Controller名称和Parameters(例如:List<>)。一个控制器实现了Undo和Redo,而所有其他控制器都遵循以Do_和Undo_为前缀的所有操作的约定。或者你可以通过额外的布尔?撤消参数。

在MVC中执行Command的方法有很多,但ActionResult与它无关。