使用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控件
為HTML代碼段獲得Panel控件
打開網頁(aspx)的設計視圖並選擇Webforms控件工具箱從工具箱中拖出一個Panel控件到HTML網頁的設計視圖上這時就會看到一個矩形框發改變它的大小直到能夠容下你想輸入的HTML代碼段
下面是HTML設計視圖中Panel控件的定義
<TABLE cellSpacing= cellPadding= width= bgColor=#ffffff border=>
<?xml:namespace prefix = asp />
<asp:panel id=TestPanel Width=px Height=px runat=server>
HTML GOES HERE
</asp:panel>
</TABLE>
將我們的HTML代碼輸入到Panel控件中
在Panel控件中編寫相關的HTML代碼(或將HTML代碼拖到Panel控件中)下面是一個例子
<asp:panel id=TestPanel Width=px Height=px runat=server>
<H>An example HTML segment that is going to disappear </H>
An example drop down
<asp:DropDownList id=ADropDownListBox runat=server>
</asp:DropDownList>
</asp:panel>
創建一個LinkButton控件
我們需要對這一部分作一些解釋我們為什麼會用LinkButton控件取代一個超級鏈接呢?超級鏈接意味著我們可以隨意到包括當前的網頁在內的任意網頁上但並不意味著我們要返回正在修改的網頁另外也沒有象OnClick這樣能夠處理超級鏈接的服務器端方法
LinkButton的外觀和風格與hyperlink相同但它還有另外二點好處即
·點擊時能夠返回同一個網頁
·便於使用的OnClick方法
下面是一個LinkButton控件定義的例子
<asp:LinkButton id=ChangeAppearanceButton runat=server>
Change Appearance
</asp:LinkButton>
提供onClick函數
如果雙擊LinkButton控件IDE就會自動地將我們引到服務器端該控件的OnClick方法處在這裡我們就可以編寫隱藏Panel控件的代碼
在按鈕的OnClick方法中隱藏/顯示Panel控件
下面是OnClick方法的一個例子
private void ChangeAppearanceButton_Click(object sender SystemEventArgs e)
{
thisTestPanelVisible = thisTestPanelVisible ? false : true;
}
上面的代碼是一個極好的知道如何維護自己狀態的用品端編程模式的例子當用戶點擊鏈接時就會執行上面的代碼但開發人員並沒有改變HTML網頁的其他部分控件本身知道如何刷新它們自己
結論
下面是我從NET模式中精選出來的非常有趣的特性
·服務器端編程模式
·Web表單的狀態是自動維護的
·高度一致的前後端統一對象編程模式
·用處很大的IDE能夠提示每個方法和可能的參數
·在網頁的HTML視圖中編寫XML代碼也有提示
·配置所需要的統一的webconfig
盡管本文中的例子相當簡單即使使用傳統的方法也能夠非常簡單地實現但這種服務器端的編程模式說明了NET的一個有趣的特性即能夠自動維護其狀態的一致的統一服務器端編程模式
From:http://tw.wingwit.com/Article/program/net/201311/15707.html