当前位置:  开发笔记 > 编程语言 > 正文

如何使用ASP.Net MVC制作向导

如何解决《如何使用ASP.NetMVC制作向导》经验,为你挑选了3个好方法。

我们的站点有多个"向导",其中各个页面收集各种数据,并且在最后一步之前无法提交到数据库.

使用ASP.Net MVC制作这样的向导的最佳/正确方法是什么?

编辑:我的老板现在说"没有javascript" - 有关如何解决这个限制的任何想法?



1> 小智..:

我不相信有最好/最正确的方式,但我这样做的方式是......

每个向导都有自己的页面.每一步都有自己的div.所有步骤都采用相同的形式.

上一个/下一个按钮基本上隐藏/显示过程的每个步骤中的div.最后一步的提交按钮提交整个表单.使用jQuery实现它是非常简单的,并且它很容易维护,因为所有向导步骤都在一个ViewPage中.

在控制器端,你有两个控制器方法,HttpVerbs.Get版本,它将准备查看表单和HttpVerbs.Post版本,它将采用FormsResult并解析它以获取提交用户答案所需的信息存储/其他进程.


哇,老板臭了.

这个答案几乎适用于那些禁用了javascript的人(是的,两者都有).您可以调整它以通过CSS隐藏下一个上一个按钮,并在您的javascript代码中取消隐藏它们.这种方式使用javascript的人看到向导,没有javascript的人会看到整个表单(没有next/prev按钮).

另一个选项是为向导中的每个步骤创建一个视图.您可以在会话中存储表单的中间结果.这种方式需要花费大量的时间和精力来实施,这意味着你可能会在你展示的时候从你的老板那里挤出一些加班费,在午餐时花费大约20分钟,javascript路线的实施是多么容易.


只是为了添加更多内容,您可以将向导的每个步骤放在"部分"视图中,并在每个DIV上执行Render.Partial.
使用单个视图和javascript隐藏/显示就像你提到的一样 - 随着向导的增长,你的页面将变得非常庞大.当然,一个2-3步的向导可能没问题,但不止于此,你只是在寻找麻烦.
@charles你说超过3个步骤将导致页面"绝对巨大".因此,您担心的是页面会变大,从而降低请求速度.换句话说,在你真正知道你需要尝试优化响应时间之前.它真的很简单.不要试图煽动,只是回应你的担忧.当然,它们是有效的,但仅当您的向导页面导致问题时才有效.或者你只是试图通过说3个以上的步骤来"煽动某事"=麻烦?
@charles什么数字变得比过早优化更糟糕?
并且不要忘记,当.NET确定内存不足时,保存在Session中的数据可能随时丢失.

2> Matthew..:

如果您不能使用JavaScript,那么使用控制器中的方法使每个步骤成为视图,并将数据保持在会话中,直到准备好提交到数据库.

您可以使用ActionLink HtmlHelper方法创建Next和Prev按钮.


对于向导,​​您需要跨多个页面的信息,因此在提交之前不要删除它.将其保持在会话中允许您前进,后退或重新启动并保留已经输入的数据.

3> Ben Mills..:

另一种方法是将使用向导构建的不完整对象保存到数据库,然后将主键传递给向导的下一步.我知道这意味着您需要使一些数据库字段可以为空,但它确实具有额外的优势,您可以将主键保存在cookie中,并允许用户稍后返回向导.此选项不需要javascript或会话状态.


为了提高安全性,您应该对主键进行散列,否则黑客可能会占用其他人的对象
推荐阅读
殉情放开那只小兔子
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有