繁体   English   中英

滚动我自己的ASP.NET注册向导

[英]Rolling My Own ASP.NET Registration Wizard

我想如果不坐下来查看所有源代码,这是一个很难回答的问题,但是我认为无论如何我都会张贴它,看看你们是否对我们在公司中使用的流程有任何概念上的想法。

我目前正在处理的项目是针对我们最终用户的自我注册页面。 以前,我们为每个不同的注册过程都使用了3个单独的ASP.NET向导控件。 客户一致认为该过程非常混乱,他们不知道应该完成三个不同过程中的哪个。 因此,在被要求将这三个应用程序编译成一个应用程序后,我很快发现注册向导控件不是很可扩展。 新过程需要非常动态,因此静态的,单一的路径向导无法满足需求。

因此,为了使流程更具动态性,我推出了自己的注册应用程序,该应用程序依赖于会话状态来引导用户进行注册。 我目前设置的方式是将二进制标志值用于注册中的可能步骤。 然后,我在SessionState中有一个整数值,该值在用户完成某个步骤后会更新。

例:


const int accountNumberStep = 1;
const int userPassStep = 2;
const int usernameReclaimStep = 4;


/* code snipped */


// Code at the end of step Username/Password selection
// at the end of Username/Password selection step, update session state to record that step was finished
SessionState("stepsCompleted") = (int)SessionState("stepsCompleted") | userPassStep;


/* code snipped */


// Code at the beginning of each step to verify previous step was completed
if (!((int)SessionState("stepsCompleted") & userPassStep == userPassStep))
{
    RedirectToPreviousPage(previousStep:=userPassStep);
}

另一个主要部分(这是动态部分起作用的地方)是使用会话变量来跟踪他们正在经历的注册类型。 换句话说,他们可能会经历三种不同的注册类型:

  1. 普通注册
  2. 帐户更新注册
  3. 获取禁用的用户帐户注册

用户完成注册时,将确定他们正在完成的注册类型。 例如,在用户输入那里的帐号后,我确定他们不是新用户,因此它们将是更新或重新启用。 此路径以会话状态存储在注册类型变量中。

该应用程序的最后一个主要部分跟踪文本框的值,单选框的选择等。这些也都存储在SessionState中,因此,如果在此过程中的任何时候,用户希望备份一两个步骤,他们将不会丢失他们输入的先前值。 这些值还用于注册过程的最后一步,在该过程中,客户实际上已在后端数据库上注册。

如您所见,所有这些都与ASP.NET向导控件的功能不同。 除了注册类型变量。 这使我可以在过程中的任何给定点将注册分支到不同的路径。

无论如何,如果这令人困惑,请再次抱歉。 我主要是希望有人会做类似的事情,也许能给我一些建议。

在此先感谢您的帮助。

CJAM

向导控件基于MultiView控件,该控件基本上提供了一次显示一个(只有一个)视图的方法。 唯一的不同是,您需要使用MultiView手动控制导航,因此允许您逐步执行这些步骤。

使用MultiView,所有视图中所有控件的值将存储在ViewState中,因此无需将它们存储在Session中。 每个视图中的按钮都可以回发,并且根据其他控件的值,您可以显示特定视图。

在MultiView和View控件上查看ASP.NET快速入门

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM