我這里主要有3 個(gè)用戶控件(欄目列表,下面的版權(quán)等信息,用戶登陸),這里都一一的說來。設(shè)計(jì)用戶控件的時(shí)候,
注意:
不需要頁指令。 文件擴(kuò)展名必須是 .ascx。 必須包含 @ Register 指令。
詳見: ms-help://MS.NETFrameworkSDKv1.1.CHS/mwsdk/html/mwconUserControls.htm
頭欄目控件頁
代碼拷貝框
[Ctrl+A 全部選擇 然后拷貝]
其中核心就是:
sub page_load() const sortcachestr_key as string = "sortcjjer" dl_catsort.datasource = CoutData.CoutSortData(sortcachestr_key) dl_catsort.databind() end sub <asp:repeater id="dl_catsort" runat="server" > <ItemTemplate><li><a href="<%# Container.dataitem("sort_url") %>"> <%# Container.dataitem("sort_name") %></a></li></ItemTemplate> </asp:repeater>
這個(gè)repeater控件的數(shù)據(jù)源來自緩存,一般的說了,欄目數(shù)據(jù)較少,但常用,適合放到緩存里面,我設(shè)計(jì)了CoutData.CoutSortData([par...]):
Shared Function CoutSortData ( optional cache_key as string = "catsort_cache_value" , optional tabref as string = "cjjer" ) as DataSet Dim cache as Cache = HttpContext.Current.Cache '引用當(dāng)前頁 dim objdataset as new dataset() if not isnothing( cache (cache_key) ) then objdataset = ctype( cache (cache_key),dataset) ' cache.remove(cache_key) else ' HttpContext.Current.Response.Write("重新加載數(shù)據(jù)") dim conn as new Conn() dim sqled as string sqled = " select * from [szd_sort] order by [sort_level]" objdataset =conn.GetDataSet(sqled,tabref) cache.insert(cache_key,objdataset,Nothing,DateTime.Now.AddMinutes(15) , cache.NoSlidingExpiration) '這種方法是創(chuàng)建相對過期的cache,就是不在此頁面活動 5 分鐘就重建,和session的策略類似 ' cache.insert(cache_key,objdataset,Nothing,Cache.NoAbsoluteExpiration,TimeSpan. FromMinutes(5)) End if return objdataset End Function
底部版權(quán)控件頁
ascx/copyright.ascx
代碼拷貝框
[Ctrl+A 全部選擇 然后拷貝]
沒啥說的。
上面的控件使用的時(shí)候:
<%@ Register tagprefix ="CJJERGUESTBOOK" tagname="copyright" src="ascx/copyright.ascx" %> <%@ Register tagprefix ="CJJERGUESTBOOK" tagname="catsort" src="ascx/catsort.ascx" %>
<CJJERGUESTBOOK:catsort id ="ccatsort1" runat ="server" />
<CJJERGUESTBOOK:copyright id="ccopyright1" runat="server"/>
用戶登陸控件
我這個(gè)是稍微花了點(diǎn)時(shí)間搞的,這個(gè)控件把驗(yàn)證用戶數(shù)據(jù)全部集成到控件本身,專門寫了一個(gè)類: BookAdminSpace: AdminUserLogin
代碼拷貝框
[Ctrl+A 全部選擇 然后拷貝]
繼承Control基類,使用接口INamingContainer,主要是獲得用戶提交的信息。
創(chuàng)建控件的時(shí)候;Protected Overrides Sub CreateChildControls() 'Protected
這是必須的。
驗(yàn)證的時(shí)候:
strUsername = CTYPE( Controls( 1 ), TextBox ).Text [code]
這適合單頁面的檢測,如果用戶控件多的話,這種編號的方式可能出錯(cuò)(超出本教程,以后談)。
使用的時(shí)候:
[code] <%@ Register TagPrefix="BookAdmin" Namespace="BookAdminSpace" Assembly="AdminUserLogin"%> <form runat="server"><BookAdmin:AdminUserLogin runat="server" /></form>
form是必須的。
出處:藍(lán)色理想
責(zé)任編輯:moby
上一頁 基類設(shè)計(jì) 下一頁 顯示留言,分頁
◎進(jìn)入論壇網(wǎng)絡(luò)編程版塊參加討論
|