gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 15:29:10 24 4
gpt4 key购买 nike

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

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com