代码之家  ›  专栏  ›  技术社区  ›  anonymous

ASP.NET MVC-控制器的作业

  •  3
  • anonymous  · 技术社区  · 17 年前

    我的服务公开了五个功能:

    • 列出队列中的包
    • 得到包裹
    • 删除包
    • 接受包裹
    • 拒绝包

    我的ASP.NET MVC控制器依赖于此服务,通常可以对操作执行服务调用。到目前为止我很高兴。

    第二部分是构建ViewModel结果。如果我在控制器内部执行此操作,那么控制器现在有一个爆炸式的依赖项列表——添加的每个操作都会增加依赖项以构建视图模型,并且这些都是由控制器继承的。我不太喜欢这个。我正在构建这个控制器,它依赖于N个不同的视图模型构建器,但每个请求只使用其中一个。

    所以我想把所有这些都拉出来,并对每个视图模型应用特定的动作过滤器。我还没有这样做,但似乎还可以。

    这给我提出的问题是:控制者的责任是什么?如果我最终将视图模型构建拉入过滤器,那么我的控制器所做的仅仅是让路由执行服务调用(并提供过滤器插件)。如果我让我的控制器负责构建每个视图模型,它就会变得一团糟。

    似乎我几乎想为每个请求实例化一个操作,而不是一个控制器,我只是滥用过滤器来达到这个目的?

    2 回复  |  直到 16 年前
        1
  •  4
  •   Mathias F    17 年前

    你们有专用的ViewModels和Poco型号吗?如果是这种情况,您可以处理ViewModel内服务的数据。 我对这场骚动很高兴。

    public class PackageViewModel()
    {
        public PackageDetail{get;set;}
        public int PackageID{get;set;}
        public List<Package>Packages{get;set;}
        public string SomeFilterCriteria{get;set;}
    
        publlic void FillPackageList(IPackageService packageService)
        {       
            Packages = packageService.GetPackages(SomeFilterCriteria);      
        }
    }
    

    在控制器中:

    public ViewResult ListPackages(PackageViewModel model)
    {
        model.FillPackageList(PackageService);
        return View("ListPackages",model);
    
    }
    

    我不明白你所说的“视图模型构建器”是什么意思。

        2
  •  2
  •   Joseph Yaduvanshi    17 年前

    推荐文章