ASP.NET2.0的multiview和wizard控件
在asp.net 1.1中,如果要做一個具有向導式的應用程序,是比較麻煩的。所謂向導式應用,就是說比如一個注冊用戶的應用,是需要若干步完成的,用戶填完某一步的表單后,可以點"下一步"而進入下一步,也可以使用"上一步"的功能回到剛才的頁面。而在asp.net 2.0中,引入了兩個新的控件:Multiview和Wizard向導控件,大大方便了用戶的使用。在本文中,將以vs.net 2005為例,說明如何使用這兩個控件來創建應用,分別舉出兩個例子:在線調查和注冊用戶,讀者可以通過本文加深對這兩個控件的認識,在這兩個例子中,我們還將使用到asp.net 2.0中的一個新的控件masterpage,具體的用法請參考其他文章的介紹。
首先,我們先用vb.net,建立一個新的網站工程,并且添加一個masterpage模版頁,設計如下圖:
可以看到,為了我們的應用演示用,在上面的模版頁中,在左部列出了兩個連接,分別是在線調查和注冊。好了,接下來我們來介紹如何使用multiview控件了。所謂multiview控件,其作用是可以將要顯示的頁面內容分為幾個部分進行顯示,而每個部分的頁面之間用比如"上一步","下一步"的導航功能來連接。我們先來看下multiview控件有哪些屬性:
1) ActiveViewIndex 該屬性默認值為1,為了顯示第一個步驟中的頁面,將其值設置為0。
2) Views:一個multiview控件包含多個views對象,每個views對象里是可以擺放控件的,但注意,在每個views對象里,所放置的控件的名稱ID必須唯一,否則會出錯。
要注意的是,multiview控件中,不提供任何自動的按鈕,要實現"下一步","上一步"的按鈕,必須自己添加。
下面開始設計這個在線調查的簡單應用,這里我們為了簡單起見,沒使用數據庫,在真實的情況下,會用數據庫來存儲用戶的選項。這個調查分為下面四個步驟:
1)第一個頁面,接受用戶輸入個人信息
2)第二個頁面,用戶選擇喜歡的編程語言
3)第三個頁面,用戶輸入最喜歡的組織
4)第4個頁面,顯示用戶在前三個頁面所輸入的信息。
首先,我們新增加一個空白頁面,并選擇剛才建立好的模版頁面為模版,再往頁面里拖拉一個multiview控件。在增加multiview控件后,再往其中拖拉4個view控件,最后往每個view控件里添加相關的控件,如下圖所示
注意我們在每個view控件中,都放置了next,previous等按鈕,以方便頁面的導航。此外,可以對每個按鈕的commandname屬性進行設置,如下表
在這個例子中,我們都設置每個按鈕的Command name屬性為NextView或者PreView,最后我們的代碼結構如下(具體代碼見附件):
運行我們的應用,首先出現的是第一步,要求填入個人信息,如下圖:
點"Next"按鈕,則進入下一個頁面:
再點Next按鈕,則同樣進入第3個頁面,最后的第4個頁面如下,可以看到輸出了用戶之前各頁面輸入的信息:
為了在最后輸出用戶之前輸入的信息,在第3個頁面(view)的Finished按鈕中的事件中,寫入如下代碼:
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屬性中,點擊并彈出新窗口,如下圖所示
在這里通過"Add"增加步驟。在增加若干個步驟后,按確定按鈕。回到wizard控件,選擇并且點選wizard控件的右上角的智能感知標記,在彈出的窗口中的"Step"下拉列表中,可以選擇每一個步驟的頁面,分別為每一個步驟的頁面添加相關控件,這里,我們設計了四個步驟,其中的第一個步驟的頁面如下圖所示,其他步驟的頁面和代碼見附件的代碼:
最后,在最后一個頁面的Finish按鈕的事件中,寫入如下代碼,以顯示之前幾步用戶的輸入:
運行程序,首先看到的是第一個注冊步驟,如下圖
接下來,按Next按鈕,進入第二個頁面,如下圖
最后,在倒數第二個頁面中,點選Finish按鈕,即可出現最后的顯示總結頁面,顯示出前幾步用戶輸入的內容

小結
在本文中,簡單介紹了在asp.net 2.0中,如何使用multiview控件和wizard控件來進行簡單開發。可以看到,如果在編寫如用戶注冊等連續步驟的應用中,使用wizard控件往往會比使用multiview控件簡單方便。
首先,我們先用vb.net,建立一個新的網站工程,并且添加一個masterpage模版頁,設計如下圖:
![]() |
可以看到,為了我們的應用演示用,在上面的模版頁中,在左部列出了兩個連接,分別是在線調查和注冊。好了,接下來我們來介紹如何使用multiview控件了。所謂multiview控件,其作用是可以將要顯示的頁面內容分為幾個部分進行顯示,而每個部分的頁面之間用比如"上一步","下一步"的導航功能來連接。我們先來看下multiview控件有哪些屬性:
1) ActiveViewIndex 該屬性默認值為1,為了顯示第一個步驟中的頁面,將其值設置為0。
2) Views:一個multiview控件包含多個views對象,每個views對象里是可以擺放控件的,但注意,在每個views對象里,所放置的控件的名稱ID必須唯一,否則會出錯。
要注意的是,multiview控件中,不提供任何自動的按鈕,要實現"下一步","上一步"的按鈕,必須自己添加。
下面開始設計這個在線調查的簡單應用,這里我們為了簡單起見,沒使用數據庫,在真實的情況下,會用數據庫來存儲用戶的選項。這個調查分為下面四個步驟:
1)第一個頁面,接受用戶輸入個人信息
2)第二個頁面,用戶選擇喜歡的編程語言
3)第三個頁面,用戶輸入最喜歡的組織
4)第4個頁面,顯示用戶在前三個頁面所輸入的信息。
首先,我們新增加一個空白頁面,并選擇剛才建立好的模版頁面為模版,再往頁面里拖拉一個multiview控件。在增加multiview控件后,再往其中拖拉4個view控件,最后往每個view控件里添加相關的控件,如下圖所示
![]() |
注意我們在每個view控件中,都放置了next,previous等按鈕,以方便頁面的導航。此外,可以對每個按鈕的commandname屬性進行設置,如下表
| Command | Name |
| NextView | 導航到下一個頁面. |
| PrevView | 導航到前一個頁面 |
| SwitchViewByID | 當command name屬性設置為 SwitchViewByID時,必須設置Command Argument屬性,比如CommandArgument="View1"表示當點該按鈕時,跳轉到ID為View1的頁面中 |
在這個例子中,我們都設置每個按鈕的Command name屬性為NextView或者PreView,最后我們的代碼結構如下(具體代碼見附件):
| <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> |
運行我們的應用,首先出現的是第一步,要求填入個人信息,如下圖:
![]() |
點"Next"按鈕,則進入下一個頁面:
![]() |
再點Next按鈕,則同樣進入第3個頁面,最后的第4個頁面如下,可以看到輸出了用戶之前各頁面輸入的信息:
![]() |
為了在最后輸出用戶之前輸入的信息,在第3個頁面(view)的Finished按鈕中的事件中,寫入如下代碼:
| 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屬性中,點擊并彈出新窗口,如下圖所示
![]() |
在這里通過"Add"增加步驟。在增加若干個步驟后,按確定按鈕。回到wizard控件,選擇并且點選wizard控件的右上角的智能感知標記,在彈出的窗口中的"Step"下拉列表中,可以選擇每一個步驟的頁面,分別為每一個步驟的頁面添加相關控件,這里,我們設計了四個步驟,其中的第一個步驟的頁面如下圖所示,其他步驟的頁面和代碼見附件的代碼:
![]() |
最后,在最后一個頁面的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控件簡單方便。








