在 MVC 中拥有巨大的控制器或许多控制器更好?

2024-04-10

我们正在 ASP.NET MVC 中构建一个相当大的 HR 应用程序,到目前为止,我们的控制器变得相当大。例如,我们有一个员工控制器,并且包含所有员工视图(个人信息、员工扣除额、家属等)。每个视图都可能有多个操作或子视图(例如 CRUD)。每个动作相对较小,但控制器可能具有数十种功能。

是否有拆分控制器的最佳实践?与其使用具有数十个视图的 Employee 控制器,不如为每种子类型(即 EmployeePersonalInfoController、EmployeeDeductionController、EmployeeDependentController)使用一个控制器会更好吗?

最后,这还重要吗?

更新说明

我最初关心的是 CRUD 操作。例如,让我们考虑创建和删除...

EmployeeController 中的当前操作:

  CreateEmployee()
  DeleteEmployee()
  CreateEmployeeDeduction()
  DeleteEmployeeDeduction()
  CreateDependent()
  DeleteDependent()
  etc.

如果控制器被拆分:

  EmployeeController
    Create()
    Delete()
  EmployeeDeductionController
    Create()
    Delete()
  EmployeeDependentController
    Create()
    Delete()
  EmployeeBenefitController
    Create()
    Delete()
  etc.

在第一个场景中,我们的约 100 个屏幕被分成 8-10 个大型控制器。在第二个中,我可能有大约 50 个控制器。


部分班级 http://msdn.microsoft.com/en-us/library/wa80x488%28VS.80%29.aspx允许您将您的类分布在多个文件中。这样,您可以将控制器的相关区域分组到单独的文件中,但它们仍然是同一控制器的一部分。例如

EmployeeDeductionController.cs

public partial class EmployeeController
{
    public ActionResult Deduct()
    {
    }
    // etc
}

EmployeeBenefitController.cs

public partial class EmployeeController
{
    public ActionResult GiveBenefit()
    {
    }
    // etc
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 MVC 中拥有巨大的控制器或许多控制器更好? 的相关文章

随机推荐

  • 如何获得自定义警报对话框,如图所示?

    i want to build a customized dialog just like the one shown in image 我创建了两个布局 一个用于自定义标题 另一个包含两个编辑文本视图和两个按钮 这里是 xml 自定义标题
  • 如何在Visual Studio中动态创建解决方案的解决方案文件夹?

    我想创建一个新的解决方案文件夹使用 PowerShell 脚本在 Visual Studio 中动态地进行操作 我知道如何在 Visual Studio 中手动为现有解决方案创建解决方案文件夹 但有没有办法可以使用 PowerShell 自
  • JavaScript html 解码

    当我在 asp net 应用程序中通过 ajax 接收 html 文本时 它看起来像 lt span 20style color green font weight bold gt 20Text 20Msg lt span gt javas
  • 准备语句将逗号分隔值传递给存储过程参数

    我无法将查询移动到存储过程中 我需要将逗号分隔的字符串传递给参数yr model no两个人IN条款 我已经阅读了一些线程并决定使用准备语句 原始查询可以很好地获取多行 但是在存储过程中 当我用call load things 128394
  • Rails 中带有回退功能的动态命名空间控制器

    我对新的 Rails 应用程序有一个有点奇怪的要求 我需要构建一个应用程序 其中所有路由都在多个命名空间中定义 让我解释一下 我想要一个应用程序 其中学校科目 数学 英语等 是命名空间 w math english each do subj
  • void 子例程返回什么?

    我刚刚对pluralsight 进行评估 并得到了以下问题 无效子程序返回什么 我的印象是无效子例程没有返回任何内容 但这不是提供的答案之一 多项选择题 Net 在后台返回值类型还是这个问题不正确 我得到的选择是 整数 布尔值 细绳 约会时
  • 任务并行库 - 如何使用 TaskContinuationOptions.OnlyOnCanceled 来触发延续?

    我正在尝试 NET 4 0 中的任务支持 特别是延续支持 我感到困惑的是我不知道如何继续TaskContinuationOptions OnlyOnCanceled标志设置为执行 如果我做一个ThrowIfCancellationReque
  • ElasticSearch 全文搜索

    我尝试在elasticsearch java api 中使用正则表达式运行全文搜索 我的过滤器是这样的 FilterBuilder qFilter FilterBuilders regexpFilter all text 但它只匹配一个单词
  • 使用 cancan 和 devise 授权 Rails 中未登录的用户行为

    Post hidden boolean 我希望登录用户可以看到所有帖子 而未登录用户只能访问隐藏字段为 false 的帖子 所以我在cancan的能力模型中这样写 if user signed in can read Post else c
  • 在 lua 中使用相等运算符比较数字有多安全?

    在我的引擎中 我有一个用于脚本编写的 Lua VM 在脚本中 我写了这样的内容 stage stage 1 if stage 5 then end and objnum tonumber 5 if stage objnum 根据 Lua 来
  • Node.js:从 jpeg 图像到视频文件的实时转换

    我正在使用node js 并通过socket io 库接收实际上是jpeg 图像的数据块 这些图像是从远程网络摄像头捕获的实时视频帧 我被迫将视频作为 jpeg 帧进行流式传输 我正在寻找一种方法来动态转换视频文件 mpeg 4 或 mjp
  • 将 ASP.Net 5 Web 应用程序部署到 Azure 时如何删除现有文件

    我有一个 ASP Net 5 中的 Web 应用程序 其源代码位于 VS Team Services 中 使用 Team Services 构建系统 我想将其直接部署到 Azure 进行持续部署 我已按照此处的步骤操作 https msdn
  • 如何将 cin 和 cout 重定向到文件?

    我怎样才能重定向cin to in txt and cout to out txt 这是您想要做的事情的一个工作示例 阅读注释以了解代码中每一行的作用 我在我的电脑上用 gcc 4 6 1 测试了它 效果很好 include
  • 递归查询 LDAP 组成员资格

    我正在编写一个基于 MVC NET 4 0 的网站 该网站需要来自我的公司 LDAP 服务器的登录凭据 我的代码要求的是仅允许属于特定组的用户 例如 我可能正在寻找属于 企业 IT 组的用户 我的凭据可能属于 系统管理员 组 该组是 公司
  • Django 计算子查询中的行数

    我需要计算子查询中的行数 这是我的 sqlite 解决方案 class SQCount Subquery Count lines in subquery template SELECT count FROM subquery s count
  • 在 XSL 转换期间维护 XML 注释

    XML
  • TF-lite 模型测试失败并出现运行时错误

    我已经为 MNIST 分类创建了一个 TF lite 模型 我使用 TF 1 12 0 并在 Google Colab 上运行它 我想使用 TensorFlow Lite Python 解释器对其进行测试 如 https github co
  • 在 C#/.NET 中检测图像 URL

    有没有办法可以检测图像 URL 例如 http mysite com image jpg 但还有其他格式吗 我正在使用 C 和 NET 4 0 就像是 bool isImageUrl string URL edit我的意思是如果 URL 指
  • Matplotlib 颜色条和 WCS 投影

    我正在尝试编写一个函数来显示天文图像 顶部有一个颜色条 自动具有相同的 x 轴长度 我遇到了问题 因为当我尝试将勾号放在顶部时 它没有执行任何操作 它将勾号保留在颜色条的底部 以及颜色条的 y 轴上的勾号 我认为这可能是 x 轴的 WCS
  • 在 MVC 中拥有巨大的控制器或许多控制器更好?

    我们正在 ASP NET MVC 中构建一个相当大的 HR 应用程序 到目前为止 我们的控制器变得相当大 例如 我们有一个员工控制器 并且包含所有员工视图 个人信息 员工扣除额 家属等 每个视图都可能有多个操作或子视图 例如 CRUD 每个