top
Loading...
在服務器端控制網頁
使用.Net和C#開發Web應用程序往往能給我們很大的啟示,尤其在開發相對簡單的例行任務時就更是如此。例如,在許多時候,我們都需要有條件地顯示一個網頁的一部分。需要這么做的原因有許多,例如,根據用戶的角色,有一部分是它不應當看到的。或者,我們也可以考慮搜索功能,只有點擊了一個鏈接后,搜索選項才是可用的。

我們先來解釋一下解決這一問題的方法,然后再詳細地解釋所使用的代碼。在.Net中開發Web應用程序,我們既可以使用服務器端的Web控件(Web表單)也可以使用HTML控件。使用.NET開發Web應用程序的重點是服務器端控件。我們在本文中就使用了Web表單服務器端控件。

Panel是一個服務器端的Web表單控件,一個Panel控件就是HTML網頁上的一個矩形區域,它是否可見可以在服務器端進行控制。因此,首先,我們可以從將HTML代碼段放在一個Panel控件中,HTML代碼段可以由服務器端控件和客戶端控件組成。一旦我們將Panel控件的visibility屬性設置為“false”,則整個HTML代碼段就成為不可見的了。其次,我們可以使用名字為LinkButton的另一個Web表單控件,它本質上是一個超級鏈接,但通過服務器端的OnClick方法,它可以起到按鈕的作用。在這種方法中,我們只要簡單地訪問Panel對象的C#語言表示,并將其visibility屬性設置為true或false,網頁就會自動地刷新自己。

在.NET中開發Web應用程序的一個重要差別是,網頁上的每個控件都被表示為服務器端的一個.NET對象,而且這些對象(控件)的狀態通過與服務器間的多次交互來維護,這就使我們能夠對服務器端和客戶端的事件作出反應。響應服務器端的事件時,百網頁重新刷新時,其內部的所有對象(控件)也都會得到刷新。我們無需再繪制任何控件,這一切都是自動完成的。這種方法最有吸引力的是一個好的面向對象編程人員能夠在一種編程語言模式中工作,而且可以方便地使用JavaScript,調試也非常簡便。這種方法的一個小問題就是它不能使用FrontPage或Dreamweaver等HTML代碼編輯器。一旦這個問題得到了解決,服務器端的編程模式就更完善了。

下面是編寫本文中例子代碼所需要的步驟:

·為HTML代碼段獲得Panel控件。
·將HTML代碼置入Panel控件中。
·創建一個LinkButton控件。
·提供一個onClick函數。
·在按鈕的點擊函數中隱藏/顯示Panel控件。

1、為HTML代碼段獲得Panel控件

打開網頁(.aspx)的設計視圖,并選擇“Webforms控件”工具箱,從工具箱中拖出一個Panel控件到HTML網頁的設計視圖上。這時就會看到一個矩形框,發改變它的大小,直到能夠容下你想輸入的HTML代碼段。

下面是HTML設計視圖中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控件中編寫相關的HTML代碼(或將HTML代碼拖到Panel控件中),下面是一個例子:

<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、創建一個LinkButton控件

我們需要對這一部分作一些解釋。我們為什么會用LinkButton控件取代一個超級鏈接呢?超級鏈接意味著我們可以隨意到包括當前的網頁在內的任意網頁上,但并不意味著我們要返回正在修改的網頁。另外,也沒有象OnClick這樣能夠處理超級鏈接的服務器端方法。

LinkButton的外觀和風格與hyperlink相同,但它還有另外二點好處,即:

·點擊時能夠返回同一個網頁。
·便于使用的OnClick方法。

下面是一個LinkButton控件定義的例子:

<asp:LinkButton id=ChangeAppearanceButton runat="server">
Change Appearance
</asp:LinkButton>

4、提供onClick函數

如果雙擊LinkButton控件,IDE就會自動地將我們引到服務器端該控件的OnClick方法處,在這里我們就可以編寫隱藏Panel控件的代碼。

5、在按鈕的OnClick方法中隱藏/顯示Panel控件

下面是OnClick方法的一個例子:

private void ChangeAppearanceButton_Click(object sender, System.EventArgs e)
{
this.TestPanel.Visible = this.TestPanel.Visible ? false : true;
}

上面的代碼是一個極好的知道如何維護自己狀態的用品端編程模式的例子。當用戶點擊鏈接時,就會執行上面的代碼,但開發人員并沒有改變HTML網頁的其他部分,控件本身知道如何刷新它們自己。

結論

下面是我從.NET模式中精選出來的非常有趣的特性:

·服務器端編程模式。
·Web表單的狀態是自動維護的。
·高度一致的前、后端統一對象編程模式。
·用處很大的IDE能夠提示每個方法和可能的參數。
·在網頁的HTML視圖中編寫XML代碼也有提示。
·配置所需要的統一的web.config。

盡管本文中的例子相當簡單,即使使用傳統的方法也能夠非常簡單地實現,但這種服務器端的編程模式說明了NET的一個有趣的特性,即能夠自動維護其狀態的一致的統一服務器端編程模式。



作者:http://www.zhujiangroad.com
來源:http://www.zhujiangroad.com
北斗有巢氏 有巢氏北斗