【发布时间】:2016-02-23 14:18:06
【问题描述】:
我正在创建一个 C# MVC 程序,用户可以在其中租用拖拉机设备。用户将选择他们想要的拖拉机类型(推土机、压路机等),然后被引导到一个屏幕,在那里他们可以选择制造该类型拖拉机的制造商(卡特彼勒、约翰迪尔等)。接下来,他们将被引导至该制造商提供的该类型拖拉机的可用型号列表。
目标是让 ViewModel 在每个步骤中存储他们的输入,以便我在结帐时收集他们的决定。如果重要的话,我在每个步骤中存储的唯一数据是每个选择的特定 ID,并且这一切都在使用多个操作的单个控制器中完成。最后,用户可以选择将另一辆拖拉机添加到他们的租借票上,或者直接按原样结账。因此,我需要一种方法来在开始新的租赁表单时初始化新的 ViewModel 对象,但如果他们选择在当前工单中添加更多拖拉机,则不创建新的 ViewModel 对象。
我的底线问题是,我似乎无法在租赁过程的第一步中找到创建 ViewModel 的方法,该 ViewModel 将在整个过程中持续存在,同时存储数据。
如有必要,我可以发布代码 sn-ps,但我主要只需要知道如何创建持久的 ViewModel 对象
【问题讨论】:
-
我以前使用过 Session 属性来做类似的事情。请参阅:code.msdn.microsoft.com/How-to-create-and-access-447ada98 或 stackoverflow.com/questions/20350327/… 我不确定它是否适用于不同的控制器,但它对我来说就像在同一控制器的方法之间共享数据的魅力。
-
您可以使用
TempData或Session,甚至可以将部分事务保存在数据库表中。 -
您可以序列化为 JSON 并将其存储在每个后续表单的隐藏字段中。那么你就不需要使用会话状态了,
-
为什么不只使用级联下拉列表(使用 ajax 根据第一个的值填充第二个),这样您就可以以一种形式完成所有这些操作,而无需进行不必要的重定向和持久化数据?
-
当我回到它面前时,我会尝试其中一些(我今天不在办公室)。我可以具体回答的唯一评论是下拉内容:我的回复是我想创建一个他们可以单击的按钮列表,这些按钮将触发一个视图到下一个视图,并且还因为这是设计
标签: c# asp.net-mvc