使用.Net和C#開發(fā)Web應(yīng)用程序往往能給我們很大的啟示,尤其在開發(fā)相對(duì)簡(jiǎn)單的例行任務(wù)時(shí)就更是如此。例如,在許多時(shí)候,我們都需要有條件地顯示一個(gè)網(wǎng)頁(yè)的一部分。需要這么做的原因有許多,例如,根據(jù)用戶的角色,有一部分是它不應(yīng)當(dāng)看到的?;蛘撸覀円部梢钥紤]搜索功能,只有點(diǎn)擊了一個(gè)鏈接后,搜索選項(xiàng)才是可用的。
我們先來解釋一下解決這一問題的方法,然后再詳細(xì)地解釋所使用的代碼。在.Net中開發(fā)Web應(yīng)用程序,我們既可以使用服務(wù)器端的Web控件(Web表單)也可以使用HTML控件。使用.NET開發(fā)Web應(yīng)用程序的重點(diǎn)是服務(wù)器端控件。我們?cè)诒疚闹芯褪褂昧薟eb表單服務(wù)器端控件。
Panel是一個(gè)服務(wù)器端的Web表單控件,一個(gè)Panel控件就是HTML網(wǎng)頁(yè)上的一個(gè)矩形區(qū)域,它是否可見可以在服務(wù)器端進(jìn)行控制。因此,首先,我們可以從將HTML代碼段放在一個(gè)Panel控件中,HTML代碼段可以由服務(wù)器端控件和客戶端控件組成。一旦我們將Panel控件的visibility屬性設(shè)置為“false”,則整個(gè)HTML代碼段就成為不可見的了。其次,我們可以使用名字為L(zhǎng)inkButton的另一個(gè)Web表單控件,它本質(zhì)上是一個(gè)超級(jí)鏈接,但通過服務(wù)器端的OnClick方法,它可以起到按鈕的作用。在這種方法中,我們只要簡(jiǎn)單地訪問Panel對(duì)象的C#語(yǔ)言表示,并將其visibility屬性設(shè)置為true或false,網(wǎng)頁(yè)就會(huì)自動(dòng)地刷新自己。
在.NET中開發(fā)Web應(yīng)用程序的一個(gè)重要差別是,網(wǎng)頁(yè)上的每個(gè)控件都被表示為服務(wù)器端的一個(gè).NET對(duì)象,而且這些對(duì)象(控件)的狀態(tài)通過與服務(wù)器間的多次交互來維護(hù),這就使我們能夠?qū)Ψ?wù)器端和客戶端的事件作出反應(yīng)。響應(yīng)服務(wù)器端的事件時(shí),百網(wǎng)頁(yè)重新刷新時(shí),其內(nèi)部的所有對(duì)象(控件)也都會(huì)得到刷新。我們無需再繪制任何控件,這一切都是自動(dòng)完成的。這種方法最有吸引力的是一個(gè)好的面向?qū)ο缶幊倘藛T能夠在一種編程語(yǔ)言模式中工作,而且可以方便地使用JavaScript,調(diào)試也非常簡(jiǎn)便。這種方法的一個(gè)小問題就是它不能使用FrontPage或Dreamweaver等HTML代碼編輯器。一旦這個(gè)問題得到了解決,服務(wù)器端的編程模式就更完善了。
下面是編寫本文中例子代碼所需要的步驟:
·為HTML代碼段獲得Panel控件。
·將HTML代碼置入Panel控件中。
·創(chuàng)建一個(gè)LinkButton控件。
·提供一個(gè)onClick函數(shù)。
·在按鈕的點(diǎn)擊函數(shù)中隱藏/顯示Panel控件。
1、為HTML代碼段獲得Panel控件
打開網(wǎng)頁(yè)(.aspx)的設(shè)計(jì)視圖,并選擇“Webforms控件”工具箱,從工具箱中拖出一個(gè)Panel控件到HTML網(wǎng)頁(yè)的設(shè)計(jì)視圖上。這時(shí)就會(huì)看到一個(gè)矩形框,發(fā)改變它的大小,直到能夠容下你想輸入的HTML代碼段。
下面是HTML設(shè)計(jì)視圖中Panel控件的定義:
<TABLE cellSpacing=0 cellPadding=0 width=600 bgColor=#ffffff border=0>
<?xml:namespace prefix = asp />
<asp:panel id=TestPanel Width="398px" Height="171px" runat="server">
HTML GOES HERE
</asp:panel>
</TABLE>
2、將我們的HTML代碼輸入到Panel控件中
在Panel控件中編寫相關(guān)的HTML代碼(或?qū)TML代碼拖到Panel控件中),下面是一個(gè)例子:
<asp:panel id=TestPanel Width="398px" Height="171px" runat="server">
<H2>An example HTML segment that is going to disappear </H2>
An example drop down
<asp:DropDownList id=ADropDownListBox runat="server">
</asp:DropDownList>
</asp:panel>
3、創(chuàng)建一個(gè)LinkButton控件
我們需要對(duì)這一部分作一些解釋。我們?yōu)槭裁磿?huì)用LinkButton控件取代一個(gè)超級(jí)鏈接呢?超級(jí)鏈接意味著我們可以隨意到包括當(dāng)前的網(wǎng)頁(yè)在內(nèi)的任意網(wǎng)頁(yè)上,但并不意味著我們要返回正在修改的網(wǎng)頁(yè)。另外,也沒有象OnClick這樣能夠處理超級(jí)鏈接的服務(wù)器端方法。
LinkButton的外觀和風(fēng)格與hyperlink相同,但它還有另外二點(diǎn)好處,即:
·點(diǎn)擊時(shí)能夠返回同一個(gè)網(wǎng)頁(yè)。
·便于使用的OnClick方法。
下面是一個(gè)LinkButton控件定義的例子:
<asp:LinkButton id=ChangeAppearanceButton runat="server">
Change Appearance
</asp:LinkButton>
4、提供onClick函數(shù)
如果雙擊LinkButton控件,IDE就會(huì)自動(dòng)地將我們引到服務(wù)器端該控件的OnClick方法處,在這里我們就可以編寫隱藏Panel控件的代碼。
5、在按鈕的OnClick方法中隱藏/顯示Panel控件
下面是OnClick方法的一個(gè)例子:
private void ChangeAppearanceButton_Click(object sender, System.EventArgs e)
{
this.TestPanel.Visible = this.TestPanel.Visible ? false : true;
}
上面的代碼是一個(gè)極好的知道如何維護(hù)自己狀態(tài)的用品端編程模式的例子。當(dāng)用戶點(diǎn)擊鏈接時(shí),就會(huì)執(zhí)行上面的代碼,但開發(fā)人員并沒有改變HTML網(wǎng)頁(yè)的其他部分,控件本身知道如何刷新它們自己。
聯(lián)系客服