我这里主要有3 个用户控件(栏目列表,下面的版权等信息,用户登陆),这里都一一的说来。设计用户控件的时候,
注意:
不需要页指令。 文件扩展名必须是 .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>
这个repeater控件的数据源来自缓存,一般的说了,栏目数据较少,但常用,适合放到缓存里面,我设计了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 '引用当前页 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("重新加载数据") 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) '这种方法是创建相对过期的cache,就是不在此页面活动 5 分钟就重建,和session的策略类似 ' cache.insert(cache_key,objdataset,Nothing,Cache.NoAbsoluteExpiration,TimeSpan. FromMinutes(5)) End if return objdataset End Function
底部版权控件页
ascx/copyright.ascx
代码拷贝框
[Ctrl+A 全部选择 然后拷贝]
没啥说的。
上面的控件使用的时候:
<%@ Register tagprefix ="CJJERGUESTBOOK" tagname="copyright" src="ascx/copyright.ascx" %> <%@ Register tagprefix ="CJJERGUESTBOOK" tagname="catsort" src="ascx/catsort.ascx" %>
<CJJERGUESTBOOK:catsort id ="ccatsort1" runat ="server" /&
此新闻共有3页 上一页 1 2 3 下一页 |