2010-07-18 191 views
11

注意:通过工作流程,我不是指工作流技术,如Workflow基础。Web应用程序工作流程的最佳实践?

我经常发现自己被要求设计流经一系列步骤的页面。

1)从一组选项中进行选择。提交。 2)用结果填充页面。做出改变。提交。 3)根据以前的结果做些事情。提交。 4)确认先前的操作。提交。 5)转到1.

购物车的电子商务网站将是一个教科书的例子。

现在有很多方法可以解决这个问题。我的问题是,在asp.net中推荐的方法是什么?在PHP或ISAPI中,我只需使用标准的html控件,获取发布数据并对其进行操作,每个数据都在不同的页面上。

ASP.NET似乎更倾向于单页解决方案。做你的工作,回传给你自己,然后在同一页面显示你的结果..一直移动到最后,使用像MultiView或UpdatePanels这样的工作来完成这项工作。但关键是,你不会回传到另一个页面。

现在我明白了,微软已经在最近的版本中向.NET添加了跨页面回发功能,但是这看起来好像不那么麻烦。除非您通过属性或上一页中的内容暴露出来,否则很难处理回传的数据。

你如何处理我放在上面的场景?你是否使用多视图或更新面板并在一个页面中完成所有操作?或者你做了几页?你在这方面的最佳做法是什么?你有任何特定的设计你倾向于使用?你如何构建网站工作流程?

回答

1

有许多这样做(除了多视图)的方式:

1,asp.net剂量支援行动后,护目镜Page.Request.Form[item]http://msdn.microsoft.com/en-us/magazine/cc164151.aspx#S3

2,您可以将温度数据保存到数据库临时表,那么当用户浏览每个页面时,他们需要做的就是引用数据库中的临时数据ID。 (查询字符串)

3,您还可以将临时数据保存为会话中的对象,这样您的“工作流程”中的所有页面都可以引用会话,然后根据该会话进行操作。毕竟,他们都有优点和缺点,主要取决于你的项目需求有多复杂。

+0

我认为存储数据可能是最好的方法。多一点工作,但是你不需要用跨页面的东西来欺骗,只需要依靠一个会话变量来保存数据的主键。 – 2010-07-24 01:39:23

1

对于这些情况,我使用了多个面板控件来保存该过程的各个步骤。设置visible属性以显示您希望用户看到的部分的UI。

您可能还想看看Wizard Web Server Control,它处理在过程步骤之间导航的管道。想了解控制器的工作原理,请看The ASP.NET 2.0 Wizard Control

0

Mystere Man,我把你的问题看成是问我们该怎么做。对我来说,我有一个词:上下文。保持在上下文中。我会解释。

如果你愿意,你可以从一个页面构建一个完整的Web应用程序。从技术上讲,即使它会像所有人一样混乱,也是可能的。我将我的功能集中在一起,形成逻辑分支,如“选择产品”。我曾经将一个页面分组为一个过程“检出”,但由于我的团队不得不在某个特定点上跳转到该过程,例如自动将产品添加到购物车,然后显示最终页面退房过程。 (想想免费下载:您不需要送货信息,账单结构或名称)。在上面的编号列表中,如果它全部在功能上,那么我会将它作为一个物理页面,但如果事实证明我必须“跳入”流程,我会将其分成多个页面。如果你把它做成一页,你需要明确的界限。

我不使用交叉发布。我喜欢使用多视图控制器。对我而言,清楚地确定每个视图需要哪些视图才能生效非常重要。在我的页面加载事件中,我有一个方法调用,它查看查询字符串或会话变量或cookie(这些是我的状态容器),并根据设置的内容生成活动的一个视图。在页面加载中没有更多的代码,相反,我使用视图的加载事件作为我的伪页面加载。我编码任何特定观点应该做的事情。

用这种方法,我认为ASP.NET的MVC模式是我应该去的地方。

相关问题