加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc-3 – .NET MVC 3中的命令模式(从控制器中删除垃圾)

发布时间:2020-12-16 07:40:02 所属栏目:asp.Net 来源:网络整理
导读:我试图在我的.NET MVC 3应用程序上实现这个 Command Pattern,专门用于保存对Thing的编辑.我还没有决定如何继续.在我得到实际问题之前,这里是简化的代码: public class ThingController{ private readonly ICommandHandlerEditThingCommand handler; public
我试图在我的.NET MVC 3应用程序上实现这个 Command Pattern,专门用于保存对Thing的编辑.我还没有决定如何继续.在我得到实际问题之前,这里是简化的代码:

public class ThingController
{
    private readonly ICommandHandler<EditThingCommand> handler;

    public ThingController(ICommandHandler<EditThingCommand> handler)
    {
        this.handler = handler;
    }

    public ActionMethod EditThing(int id)
    {
        ...build EditThingViewModel and return with View...
    }

    [HttpPost]
    public ActionMethod EditThing(int id,EditThingViewModel vm)
    {
        var command = new EditThingCommand
        {
            ...not sure yet...
        };

        this.handler.Handle(command);

        ...redirect somewhere...
    }
}

我的EditThingViewModel完全与我的域断开连接,该域由POCO类组成.看起来我的EditThingCommand应该如下所示:

public class EditThingCommand
{
    Thing ModifiedThing;
}

但是,构建ModifiedThing仍然会在我的控制器中发生.这是本案中的大部分工作.在构建ModifiedThing时(以及应用于它的“旧”时间戳进行乐观并发检查),剩下的就是命令在我的数据上下文上调用Update.

显然,能够使用其他命令轻松装饰它是有价值的,但我也希望能够在我的控制器之外移动ModifiedThing的构造. (也许这个问题就是这个问题.)EditThingCommand在我的域中,没有对EditThingViewModel的引用,所以它不能去那里.在我的表示层中有另一个命令将我的viewmodel映射到我的poco实体是否有意义?

解决方法

我在域外创建了一个EditThingPostCommand,它将EditThingViewModel作为参数. EditThingPostCommandHandler负责创建EditThingCommand并调用其处理程序.

它有效,但我不会认为这是我问题的最佳答案.可以说,EditThingPostCommandHandler正在做的大部分工作都可以在自定义AutoMapper配置中完成,这仍然可以用于清理控制器操作方法.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读