请参阅“Pro ASP.NET MVC 2 Framework”,ActionResult是命令模式的实现。我想知道这个模式是如何实现的?你能给我发一些光吗?
谢谢。
答案 0 :(得分:11)
action方法返回一个实例,该实例包含框架接下来需要执行的命令。这提供了一种延迟框架/管道代码执行的方法,直到动作方法完成,而不是在动作方法中。
此命令由ActionResult抽象类表示,并拥有ExecuteResult方法,该方法由ViewResult
和JsonResult
等具体命令实现:
答案 1 :(得分:1)
ActionResult根本不是命令模式的实现。 Controller上的Action最接近命令,ActionResult通常是对View的更改。该命令更新模型,ActionResults不更新模型。
我通过使用ActionFilter在MVC中实现了命令模式,并在历史记录中存储了Action,Controller名称和Parameters(例如:List<>)。一个控制器实现了Undo和Redo,而所有其他控制器都遵循以Do_和Undo_为前缀的所有操作的约定。或者你可以通过额外的布尔?撤消参数。
在MVC中执行Command的方法有很多,但ActionResult与它无关。