注意:按工作流程,我不是指工作流程技术,例如工作流程基础。
我经常发现自己被要求设计流经一系列步骤的页面。
1)从一组选项中选择。提交。 2)使用结果填充页面。做出改变。提交。 3)根据以前的结果做一些事情。提交。 4)确认以前的操作。提交。 5)转到1。
带有购物车的电子商务网站将成为教科书的一个例子。
现在,有很多方法可以解决这个问题。我的问题是,在asp.net中推荐的方法是什么?在PHP或ISAPI中,我只使用标准的html控件,获取发布数据并使用它来处理,每个都在不同的页面上。
ASP.NET似乎更倾向于单页解决方案。做你的工作,回复自己,然后在同一页面显示你的结果..一直到最后,使用像MultiView或UpdatePanels这样的工作。但关键是,你不回发到另一个页面。
现在我明白微软已经在最近的版本中向.NET添加了跨页回发,但这似乎不那么令人厌烦。除非您通过属性或上一页中的某些内容公开它,否则很难处理回发的数据。
你如何处理我上面列出的情景?您是使用多视图还是更新面板并在一个页面中完成所有操作?或者你在几页中做到了吗?你在这方面的最佳做法是什么?您是否有任何特定的设计?您如何构建网站工作流程?
答案 0 :(得分:1)
对于这些情况,我使用了多个面板控件来保存过程的各个步骤。设置visible属性以显示您希望用户看到的部分的UI。
您可能还想查看处理管道的Wizard Web Server Control,以便在流程的各个步骤之间进行导航。要了解控件的工作原理,请查看The ASP.NET 2.0 Wizard Control。
答案 1 :(得分:1)
有很多方法可以做到这一点(除了多视图):
1,asp.net dose support action post,goggle Page.Request.Form[item]
http://msdn.microsoft.com/en-us/magazine/cc164151.aspx#S3
2,您可以将临时数据保存到数据库临时表中,然后当用户遍历每个页面时,他们需要做的就是引用数据库中的临时数据ID。 (查询字符串)
3,您还可以将临时数据保存为会话中的对象,因此“工作流程”中的所有页面都可以引用会话,然后根据它进行操作。
毕竟,它们都有利有弊,主要取决于你的项目要求有多复杂。答案 2 :(得分:0)
Mystere Man,我读了你的问题,问我们是怎么做的。对我来说,我有一个词:语境。保持在上下文中。我会解释一下。
如果您愿意,可以从一个页面构建整个Web应用程序。从技术上讲,它有可能,尽管它会让所有人都感到困惑。我将我的功能组合成逻辑部分,如“选择产品”。我曾经制作过一个单独的页面对“Check Out”进程进行分组,但是现在我的团队不得不在特定点上跳到这个过程,例如自动将产品添加到购物车,然后在最后一页显示退房流程。 (想想获得免费下载:您不需要发货信息,账单形成或他们的名字)。使用上面的编号列表,如果它全部在功能上,那么我会将其设为一个物理页面,但如果事实证明我必须“跳入”流程,我会将其分解为多个。如果你把它打成一页,你需要明确的界限。
我不使用交叉发布。我喜欢使用多视图控制器。对我来说,重要的是要清楚地确定每个视图需要激活的内容。在我的页面加载事件中,我有一个方法调用,查看查询字符串或会话变量或cookie(这些是我的状态持有容器),并根据设置,我激活一个视图。页面加载中没有更多代码,相反,我使用视图的加载事件作为我的伪页面加载。我编写了特定视图应该做的任何代码。
通过这种方法,我认为ASP.NET的MVC模式是我应该去的地方。