【问题标题】:Possible to pass parameters from viewmodel to other page? [closed]可以将参数从视图模型传递到其他页面吗? [关闭]
【发布时间】:2014-02-18 22:56:54
【问题描述】:

是否可以将 viewmodel 中的 observable 和 observable 数组作为参数传递给其他页面或作为 json 传递?

假设我有几个字段,当我按下按钮时,它将重定向到另一个页面并显示参数。

这可以通过敲除/jquery 来完成,还是我需要发布到控制器并从那里重定向?

这个想法是将信息传递到确认页面,然后从那里继续提交给控制器。

感谢正手!

【问题讨论】:

    标签: jquery asp.net-mvc-4 knockout.js


    【解决方案1】:

    我什至会说你不应该做这两件事。闻起来像是糟糕的设计。

    不久前我回答了相同的问题(或至少非常相似),我认为答案也适用于这里: durandal : best way to pass data between ViewModels

    编辑:我读过你的目标是什么。在那种情况下,我会以不同的方式处理它:永远不要离开页面开始。只需在当前视图中创建内联确认“页面”,并设置一个标志来确定是否应显示表单或确认。这将节省大量开销,并且客户端的响应速度也会更快。

    编辑 2:您请求的小提琴:http://jsfiddle.net/7zp5K/33/

    基本上,诀窍都在您的视图模型上的submit 函数中,我在其中交换了可观察到的showConfirm。在您的 HTML 中,我创建了 2 个“视图”(div)。根据showConfirm的状态只显示一个。

    在确认视图中,我使用foreach 绑定来显示所选项目。

    【讨论】:

    • 我的问题是我将拥有大约 20 个不同的 id,因此很难路由到链接/id 或类似的东西。我需要传递对象。 :( 在这种情况下,最好的方法可能是发布到控制器并映射到对象?
    • 如果你问我,将对象传递到另一个页面根本不是一个好主意。选择我在链接的主题中提出的“视图模型驱动方法”。此外,我编辑了我的帖子以完全提出其他建议。
    • 使用 Knockout 时,您应该注意“页面”和“视图”之间的细微差别。视图只是呈现数据的一种方式。在您的情况下,数据始终保持不变,但您呈现它的方式不同(表单与带有确认检查的只读)。您只需要切换视图 (HTML),而不是数据。完全没有必要通过创建第二个页面来使其复杂化。
    • 是的,这听起来好多了。我唯一要切换的是另一个视图并显示如果您按下提交按钮将提交的详细信息。我是淘汰赛和 JavaScript 的新手,所以我知道如何在我当前的视图中创建内联页面。你可以看看这个小提琴并告诉我把确认页面放在哪里吗?我想在确认页面上显示两个列表中的所有项目。 jsfiddle.net/7zp5K/31谢谢!
    • 我用一个有效的小提琴更新了我的答案
    【解决方案2】:

    如果我正确理解了您的问题,您正试图将 ViewModel 从一页传递到另一页。如果是这样的话,那是不可能马上的。您必须根据接收到的数据(查询字符串、JSON 或任何其他数据格式)在重定向页面中创建 ViewModel。

    如果数据很小,您可以通过querystring 传递它,并在重定向页面中相应地创建一个视图模型。否则,使用表单 post 提交数据。它更多的是要求,而不是淘汰

    【讨论】:

    • 在另一个页面(我将重定向到)中,我将在 viewmodel 构造函数中获取参数。我将有 2 个可观察数组和 2 个可观察数组,它们将包含 1-20 个字符串。所以它不会传递那么大的数据。如果可能的话,我想避免提交这个,因为我只会把它传递到一个确认页面,然后从那里提交一个表单。
    猜你喜欢
    • 2021-04-11
    • 1970-01-01
    • 1970-01-01
    • 2019-06-09
    • 1970-01-01
    • 2023-03-14
    • 2017-01-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多