gpt4 book ai didi

asp.net-mvc - 处理 View 和模型之间多个请求的最佳 MVC 方式

转载 作者:行者123 更新时间:2023-12-04 05:11:40 24 4
gpt4 key购买 nike

我有一个 .net 应用程序,其中包含一个表单层、一个 DB 模型层( Entity Framework )和一个介于这两层之间的 Controller 层。

我需要处理这种情况:

  • 用户按下按钮来编辑一些参数
  • 该表单需要请求一些代表这些参数当前状态的数据库数据
  • 可能,用户请求可能被拒绝,因为当前情况不适用,在这种情况下,应显示错误消息框
  • 显示模态表单,用户更改参数并确认
  • 在 DB 模型中进行了更改

  • 这很简单。

    事实是,在第 4 点,我们需要一些在第 2 点已经处理过的数据。

    特别是:
  • 在第 2 点,我们向 DB 模型请求一些数据,该数据可能不在缓存中,因此执行 SQL 查询
  • 该数据由本地 LINQ 处理
  • 返回以模态形式显示的几个复选框的状态
  • 在第 4 点,我们再次需要 LINQ 处理的数据
  • 因为我们来自 Form 层,所以我们不再拥有这些数据
  • 因此再次向 DB 模型请求数据,但这次它在缓存中
  • 该数据由本地 LINQ 再次处理

  • 是否值得重新加载和重新处理数据以维护 MVC 模式?

    最佳答案

    我不知道它在 VB.NET 中究竟是如何工作的,但是如果我们以纯粹的“MVC”方式(至少,我是如何理解的)看待这个问题,就会发现有些不对劲。

  • 这一步,点击完成后,表单调用 Controller (所有 Action 都由 Controller 传递)
  • 然后 Controller 需要进行验证。如果它需要数据库来做到这一点,那就这样吧。然后,它将用户重定向到一个 View 。 (应该是留言框还是其他表格输入数据)
  • 在这里,用户在表单中进行更改,然后单击按钮进行提交。在此按钮中,您再次调用 Controller (另一个功能/ Action )。
  • 在 Controller 中,您可以通过 LINQ 进行所需的验证并插入/更新数据库中的数据。然后,您可以重定向到 View 。

  • 由于在第 2 步和第 4 步之间可能已经过去了很多时间,并且数据可能在 2 次调用之间发生了变化,因此我认为执行 2 次请求是可以的。另外,由于它们在 Controller 中有 2 个不同的功能,我认为您没有选择。

    这就是我的看法,但我可能是错的:)

    编辑

    我不知道对数据库的查询是耗时的,这是一个问题。如果绝对目标是不让用户等待两次,因为时间在这个应用程序中很重要,我猜你可以存储你的对象在内存中获取第 2 步并使用 Controller (使用某种辅助类)检索它。这就像在数据库中进行查询,但在内存中。如果您使用 repository pattern ,那么在 Controller 中编写逻辑的程序员甚至不会知道他正在查询数据库以外的其他内容,因为这是另一个抽象级别。您可以在第 4 步之后立即释放内存。

    关于asp.net-mvc - 处理 View 和模型之间多个请求的最佳 MVC 方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14849953/

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