【问题标题】:MVCContrib grid and posting back with model binderMVCContrib 网格并使用模型绑定器回发
【发布时间】:2009-07-23 23:57:07
【问题描述】:

我的 MVCContrib 网格的内容来自强类型视图上的模型。发布后,当它返回控制器时,网格的内容不在模型对象中。我可以看到这是因为网格呈现为只是在单元格中包含文本的表格。有什么我可以做的,以便当帖子发生时,我发送到网格的列表数据会在帖子中返回?

【问题讨论】:

    标签: asp.net-mvc mvccontrib model-binding model-binders


    【解决方案1】:

    您可以使用 TempData 来持久化此信息服务器端。 TempData 中的信息将针对一个请求持续存在。不过我不太喜欢这个选项。

    你不能从数据库中重新填充你的模型吗?如果用户没有更改信息,为什么您需要回发所有相同的未更改信息?只需从之前获得它的地方再次抓住它。

    【讨论】:

    • 你是对的。那是一种选择。在我看来,我至少应该能够让模型恢复到我发送它的状态。但这就是表单提交的用途,mvccontrib 不会呈现“表单”控件....
    【解决方案2】:

    如果您想在模型被序列化到网格中时重新创建模型,您必须在网格内(或者可能在网格外)嵌入正确命名的表单元素,并在与包含按钮的表单相同的表单中发回您希望重新创建模型的操作。

    虽然这是可行的,但您实际上是在重新创建 __VIEWSTATE,这大大降低了使用 MVC 的乐趣(请阅读“这是一个丑陋的 hack,您应该卸载您的 IDE 才能考虑它”)。

    如果不更好地了解您要解决的方案,就很难为您指明正确的方向。在这些情况下通常的工作流程是 获取模型

    1. 生成页面
    2. 将模型的任何更改记录在 页面上的表格
    3. 提交对操作的更改
    4. 再次获取模型
    5. 使用 TryUpdate 持久化更改 从帖子到模型

    如果您遇到性能问题(您已经证明您遇到了性能问题,对吗?您没有过早地进行优化?),在它们发生的地方解决它们(即缓存在您的数据访问中),而不是弯曲 MVC确实不应该这样。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-24
      相关资源
      最近更新 更多