在asp.net 1.1中,如果要做一个具有向导式的应用程序,是比较麻烦的。所谓向导式应用,就是说比如一个注册用户的应用,是需要若干步完成的,用户填完某一步的表单后,可以点"下一步"而进入下一步,也可以使用"上一步"的功能回到刚才的页面。而在asp.net 2.0中,引入了两个新的控件:Multiview和Wizard向导控件,大大方便了用户的使用。在本文中,将以vs.net 2005为例,说明如何使用这两个控件来创建应用,分别举出两个例子:在线调查和注册用户,读者可以通过本文加深对这两个控件的认识,在这两个例子中,我们还将使用到asp.net 2.0中的一个新的控件masterpage,具体的用法请参考其他文章的介绍。
首先,我们先用vb.net,建立一个新的网站工程,并且添加一个masterpage模版页,设计如下图:


注意我们在每个view控件中,都放置了next,previous等按钮,以方便页面的导航。此外,可以对每个按钮的commandname属性进行设置,如下表
| Command | Name |
| NextView | 导航到下一个页面. |
| PrevView | 导航到前一个页面 |
| SwitchViewByID | 当command name属性设置为 SwitchViewByID时,必须设置Command Argument属性,比如CommandArgument="View1"表示当点该按钮时,跳转到ID为View1的页面中 |
<asp:MultiView ID="MultiView1" runat="server" ActiveViewIndex="0">
<asp:View ID="View1" runat="server">
...
</asp:View>
<asp:View ID="View2" runat="server">
...
</asp:View>
</asp:Multiview>



Partial Class Survey
Protected Sub btnFinish_Click(ByVal sender As Object,
ByVal e As System.EventArgs) Handles btnFinish.Click
lblFirstName.Text = txtFirstName.Text
lblLastName.Text = txtLastName.Text
lblEmailId.Text = txtEmail.Text
If rdoVB.Checked Then
lblLanguage.Text = "VB"
ElseIf rdoCSharp.Checked Then
lblLanguage.Text = "C#"
ElseIf rdoJava.Checked Then
lblLanguage.Text = "Java"
End If
If rdoMicrosoft.Checked Then
lblOrganization.Text = "Microsoft"
ElseIf rdoSun.Checked Then
lblOrganization.Text = "Sun Microsystems"
ElseIf rdoIBM.Checked Then
lblOrganization.Text = "IBM"
End If
End Sub
Wizard向导控件
在asp.net 2.0中,wizard向导控件比multiview控件更方便。Wizard控件本身已经设置了比如上一步,下一步,完成等按钮了,而且在设计视图状态下,可以根据自己需要查看每一步骤的页面的内容,而不象multiview控件那样,在设计视图下,在一个页面中,将全部所有的步骤涉及的页面都显示出来。下面看下wizard控件的重要属性和事件:
ActiveStepIndex - 显示当前是向导中的第几个步骤,在页面刚开始加载时,默认是0.
DisplaySideBar - 当该属性设置为true时,则将整个流程的步骤全部显示在页面中。
DisplayCancelButton - 当该属性设置为true时,在每个页面中,都将显示一个cancel的按钮,要处理取消的事件,可以在 CancelButtonClick() 中编写代码
一些重要事件
ActiveStepChanged.---当从一个步骤转换到另一个步骤时,触发的事件
PreviousButtonClick.-当按"上一步"按钮时触发的事件
NextButtonClick. ---当按"下一步"按钮时触发的事件
FinishButtonClick.-----当"完成"按钮时触发的事件
CancelButtonClick. -----当"取消"按钮时触发的事件
下面,我们重新建立一个空白页面,同样使用之前的模版页面作为模版页。往页面里拖放一个wizard控件,在控件的wizardsteps属性中,点击并弹出新窗口,如下图所示


最后,在最后一个页面的Finish按钮的事件中,写入如下代码,以显示之前几步用户的输入:
Protected Sub Wizard1_FinishButtonClick(ByVal sender As Object,
ByVal e As System.Web.UI.WebControls.WizardNavigationEventArgs)
Handles Wizard1.FinishButtonClick
lblFirstName.Text = txtFirstName.Text
lblLastName.Text = txtLastName.Text
lblEmailId.Text = txtEmail.Text
lblUserName.Text = txtUserName.Text
If rdoDaily.Checked Then
lblNewsletters.Text = "Daily Updates"
ElseIf rdoWeekly.Checked Then
lblNewsletters.Text = "Weekly Summary"
ElseIf rdoNoThanks.Checked Then
lblNewsletters.Text = "No Thanks"
End If
End Sub
运行程序,首先看到的是第一个注册步骤,如下图

接下来,按Next按钮,进入第二个页面,如下图

最后,在倒数第二个页面中,点选Finish按钮,即可出现最后的显示总结页面,显示出前几步用户输入的内容

小结
在本文中,简单介绍了在asp.net 2.0中,如何使用multiview控件和wizard控件来进行简单开发。可以看到,如果在编写如用户注册等连续步骤的应用中,使用wizard控件往往会比使用multiview控件简单方便。