asp.net-mvc - ASP.NET MVC - Controller 的工作

标签 asp.net-mvc model-view-controller controller viewmodel action-filter

我想我开始对 MVC 中 Controller 的工作感到困惑。

我有一个公开五个功能的服务:

  • 列出队列中的包
  • 获取包裹
  • 删除包
  • 接受包裹
  • 拒绝包裹

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

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

所以我正在考虑将所有这些都拿出来并应用特定于每个 View 模型的操作过滤器。我还没做过,但看起来还不错。

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

似乎我几乎想实例化每个请求的操作,而不是 Controller ,而我只是滥用过滤器来实现这一点?

最佳答案

你们有专用的 ViewModel 和 Poco-Model 吗?如果是这种情况,您可以处理来自 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);      
    }
}

在 Controller 中:

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

}

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

关于asp.net-mvc - ASP.NET MVC - Controller 的工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1240483/

相关文章:

mysql - 简单的数据库注意事项和 CakePHP

c# - 在同一线程中类的所有实例之间共享类的数据成员

.net - 如何提高 ASP.NET MVC 应用程序性能?

asp.net-mvc - 可以浏览 DataAnnotations 的自定义 Html 帮助器

c# - 在 ASP.NET MVC (3) 中使用数据注释验证时是否可以生成属性的计算值?

javascript - 在没有 AJAX 的 jquery 提交调用之前执行 JavaScript 的方法?

Java Swing MVC 架构

java - JSF中MVC的矛盾解释

ruby-on-rails - 任意或自定义URL的Rails功能测试

javascript - AngularJS: Controller 未捕获错误