熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

在ASP.NET中使用PlaceHolder控件

2013-11-13 12:16:31  來源: .NET編程 

  在從一個Web頁面轉換到另一個Web頁面時你的ASPNET應用程序的用戶界面的某些部分常常是保持不變的——如某些裝飾的部分頁眉處的GIF圖片水平工具條或導航條左側的鏈接等等你可以繼續用它們而不必為每個頁面重建

  在過去一個流行的ASP技術就是為一個頁面的每個主要部分創建一個include文件然後建一個整體的HTML表表的單元包含每個include文件這種方法是可行的但是不美觀還容易出錯幸運的是ASPNET可以讓你用一種更好的方法來解決這個問題運用一個Visual Studio NET PlaceHolder Web控件該控件將其它控件作為一個集合(collection)包含起來你可以在運行時清除那個collection或添加它例如你可以在運行時添加一個Web用戶控件(一個模塊式的Web頁面)我將講述如何將PlaceHolder Web控件同Web用戶控件結合起來運用為構建ASPNET應用程序提供一個方法

  首先在VSNET中創建一個新的ASPNET Web應用程序我在樣例代碼中用的是C#創建一個Web窗體保存的文件帶有ASPX擴展名我稱其為我的mainaspx該頁面是你的應用程序中唯一的Web頁面因為你用Web用戶控件(ASCX文件)來開發所有的頁面內容

  在mainaspx頁面中創建你選擇的站點裝飾內容在你想放置站點豐富內容地方添加一個PlaceHolder控件然後將下面的代碼添加到你的頁面的Page Load事件中

private void Page_Load(object sender
SystemEventArgs e)
{
string p = RequestQueryStringGet(p);
PlaceHolderControlsClear();
if (p == null)
PlaceHolderControlsAdd(LoadControl
(modules/ + Default + ascx));
else
{
PlaceHolderControlsAdd(LoadControl
(modules/ + p + ascx));
}

  通過該代碼你可以在項目模塊文件夾中看到一個包含Web用戶控件頁面(ASCX)的名字的查詢字符串參數p你不用將所有ASCX文件都放在一個單獨的文件夾中但這麼做的確可以進一步隔離應用程序

  一旦你得到那個字符串後清空PlaceHolder的Controls集合清除你在先前可能顯示的任何ASCX然後查看一下代碼看你是否需要加載一個缺省的ASCX最後如果p查詢字符串是請求的一部分那麼由p查詢字符串代表的頁面就被加載了

  你不需要費很大的勁構建代碼來在你的站點上顯示多個Web頁面在你的VSNET項目中添加一個新的Web用戶控件頁面一旦你添加了這個頁面你就可以把它當作你的應用程序中的唯一的頁面來設計並編寫代碼了你甚至不需要知道它將在mainaspx頁面中運行當然如果該頁面需要與主頁面交互情況並沒有這麼簡單但在這裡我並不打算講述這個問題 


保持你的Web GUIs的恆量元素

  設想你需要在VSNET開發環境中顯示一個Account Logon用戶控件(見圖代碼只給開發人員提供與該頁面細節相關的UI沒有辦法改變整體頁面的其它方面

  現在當你在一個浏覽器中運行http://localhost/CSCSdotNET/mainaspx時首先加載了defaultascx頁面這是由於mainaspx的Page Load事件的緣故要導航到Login頁面你只需將一個p查詢字符串參數添加到請求——在這個例子中運用URL http://localhost/CSCSdotNET/mainaspx?p=AccountLogon現在顯示的就是整個mainaspx頁面以及你在圖中看到的動態加載的AccountLogonascs Web用戶控件


From:http://tw.wingwit.com/Article/program/net/201311/15554.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.