【问题标题】:MVC way of handling data inputMVC处理数据输入的方式
【发布时间】:2009-03-27 22:27:51
【问题描述】:

我有一个数据输入模块,我在其中添加了我的产品信息及其子信息,例如:

产品基本信息 产品价格信息 产品价格详情

价格信息和价格详情与产品相关,属于列表

在我的 Web 表单方法中,我会将主要产品对象存储在视图状态中,并在执行 ajax 回发时填充它的定价信息和详细信息。通过这种方式,我可以创建一个紧凑的模块,该模块非常用户友好,可以从一个地方定义大量数据,而无需从单独的模块中输入这些数据。当我完成后,我会做一个 product.save() 并将所有数据保存到 db 上的相应表中。

现在我正在.net mvc 框架上构建类似的应用程序,并思考在 mvc 上处理这个问题的好方法是什么。

在单击“保存”之前,我不会对将所有这些存储在客户端产生共鸣。每次操作后保存到数据库让我想起了我在 asp 上编码的日子。

将感谢您对在 mvc 框架上解决此问题的方法的意见

【问题讨论】:

  • 在客户端存储有什么问题?
  • 你意识到将它存储在 ViewState 实际上是存储在客户端吗?
  • 在客户端存储似乎正在成为额外的维护。为了正确处理,我需要创建我的类的 JS 版本并在其中填充存储数据。所以 1. 我需要复制服务器上已有的类结构 2. 我需要维护它。
  • 不要误会我的意思,尽管我并没有结束客户端方法我很开放并愿意挑战我的观点 - 我只是不清楚为什么我需要经历这些努力.

标签: c# .net javascript asp.net-mvc


【解决方案1】:

我认为最好的方法是将数据存储在客户端。它减少了不必要的回发并提高了应用程序的响应能力。如果你真的想把它存储在服务器上,你可以使用SessionState

如果你真的想将它存储在 ViewState 之类的东西中,你可以使用这样的解决方案:ASP.NET MVC - Is there a way to simulate a ViewState?。但是,我建议不要这样做,因为它会使事情变得更加复杂。在客户端执行可能是最优雅的方式,而将其存储在 SessionState 中是最简单的。

请记住,您始终可以避开 MVC 模式并为该特定页面使用简单的 Web 表单(它将在您需要的地方为您提供 ViewState):ASP.NET MVC controller actions design

【讨论】:

  • 请看我上面的 cmets。我不清楚为什么这将是最好的方法。从用户的角度来看,数据输入模块上的小回发不会造成太多明显的延迟,但会为应用程序增加一个高维护层..
【解决方案2】:

将您的产品列表存储到视图的模型中,每次更改值时,您都可以将 Ajax 发布到控制器并将更改保存到数据库,使用部分视图来显示产品列表中的每个项目

【讨论】:

    【解决方案3】:

    您可以尝试集成http://www.castleproject.org/ActiveRecord/ 以便于保存和更新。这样你就可以使用 ORM(对象关系映射)将你的模型映射到你的数据库上。一开始需要做更多的工作,但最终会得到简单的命令,例如 product.Update() 和 product.Create()

    【讨论】:

      猜你喜欢
      • 2016-11-03
      • 2011-01-15
      • 2022-01-09
      • 1970-01-01
      • 1970-01-01
      • 2016-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多