gpt4 book ai didi

c# - 网页设置向导的分页机制

转载 作者:太空宇宙 更新时间:2023-11-03 16:40:18 24 4
gpt4 key购买 nike

我正在使用 asp.net mvc 2.0 和 jqModal 来设置模式向导。

根据选择的初始小部件类型,我有可变数量的页面。

我最初的头脑 Storm 是使用如下所示的枚举:

public enum WizardSetup
{
Start,
Page1,
Page2,
Finish
}

您将如何翻阅枚举?同样,可能有也可能没有基于所选小部件的第 2 页。因此,在用户界面中会有后退、下一步和完成按钮来循环浏览页面。

我想到了不同页面的用户控件和使用 jqModal 的 ajax 来加载不同的页面。

对执行此分页操作的最佳方式和最简单方式有何想法?

最佳答案

我能想到的几种为多步向导设置皮肤的方法:

  1. 使用一些 jquery 等来翻阅页面上已经存在的 div。当前不活动的那些被隐藏。这是最微不足道的,但不会在没有 js 的情况下优雅地降级。也不适用于您的动态页面树。从好的方面来说,您不会因为尝试在单独的操作之间传递状态而感到痛苦。

  2. 为向导的每个步骤使用 ajax 表单,并将下一步按钮连接到生成适当下一步的操作。在这些操作之间传递 View 模型很棘手。您要么必须在表单上使用隐藏字段,要么在 MVC Futures 中使用 Html.Serialize() 之类的东西来传递整个 View 模型对象(可能更好,除非它只有几个字段)。如果您正在使用验证并且让操作在每个步骤接收 View 模型对象,您也会遇到验证问题,因为它将尝试验证在您所在的向导步骤中未设置的字段。这可以与 ActionFilter 一起解决,以删除与您所在的步骤不相关的字段的错误。这种方法的好处在于,如果您使用像样的 ajax 库(即使是 ms unobtrusive ajax),它也可以在没有打开 js 的情况下工作。

  3. 使用 json 有效负载来回发送到服务器创建一些手工制作的东西。您将需要付出很多努力,因为您将使用 js 构建表单客户端。

  4. 与 2 类似,但将状态存储在 session 变量(使用多服务器缩放概率)或数据库等中。无需每次都将其来回编码到浏览器。

当然,如果您不需要在向导步骤之间传递状态,那就容易多了。

Steve Sanderson 在 Pro Asp.Net MVC2 书中对 2) 进行了相当不错的工作,尽管它现在有点过时并且它使用了一个 Action 过滤器,而 Html.Serialize 在 mvc3 中的工作方式不需要Futures(可以反序列化为 action 方法的参数)。

不幸的是,多步向导有点麻烦,因为它们本质上是有状态的,这与网络技术所追求的目标几乎相反。

关于c# - 网页设置向导的分页机制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7779320/

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