我想我开始对 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/