---------------------- Windows Phone 7手机开发、.Net培训、期待与您交流! ----------------------
MasterPage母版:把页面布局好,需改动的地方留空留空的部分由子页面填充。母页版几乎可以使用所有的普通Webform页面可以使用的技术。
实例母版页的建立:前台代码,前台取名为C01Itcast.master
<head runat=”server”>
<title></title>
<style type=”text/css”>
#tbList{border:1px soild #000;width:100%;height:600px}
</style>
<asp:ContentPlaceHolder id=”head” runat=”server”>// ContentPlaceHolder用来“挖坑“根据可根据需要设置
</asp:ContentPlaceHolder>
</head>
<body>
<form id=”form1” runan=”server”>
<table id=”tbList”>
<tr><td colspan=”2”>菜单栏<asp:Image ID=”imghead” Runat=”server”></td></tr> //colspan合并两个单元格
<tr>
<td>链接很多</td>
<td style=”width:70%”>子页内容
<asp:ContentPlaceHolder id=”contentBody” runat=”server”> //ContentPlaceHolder内容占位符
</asp:ContentPlaceHolder>
</td>
</tr>
<tr><td clospan=”2”>页尾,公司资料--------</td></tr>
</table>
</form>
</body>
添加aspx,勾选母版页代码如下:
<asp:Content ID=”Content1” ContentPlaceHolderID=”head” Runat=”server”>
</asp:Content>
<asp:Content ID=”Content2” ContentPlaceHolder ID=”contentBody” Runat=”server’>
<img src=”up/1.jpg”>//程序运行的结果是在第二行的第二个单元格内显示一个图片,图片地址为up/1.jpg
</asp:Content>
Aspx.cs 代码如下
Protected void Page-Load(object sender,EventArgs e)
{
this.Master.FindControl(“imghead” as image).ImageUrl=”up/2.jpg”;//Master属性为当前子页面的母版页,即在子页面中寻找母版页的元素。运行结果在第一行出现图片,图片地址为”up/2.jpg”
}
为什么.master不能被访问.CS文件为什么不能被下载?在整个freamwork配置文件里面已经写好master是由一个forbidden类处理,此类不能真正的创建页面对象,而是抛出一个异常。
server属性 server.Transfer和server.excute都不能够访问外网,起重定向的作用。
server.excute:执行完重定向页面后会反过来执行当前页面,Server.Transfer执行完重定向页面后不会返回当前页面继续执行当前页面代码。
当我们使用Server.Excute或Server.transfer做服务器内部定向时,会将当前页面的上下文对象传给目标页面,但是在目标页面中,不能确定为目标页面的回传动作,所以不会执行目标页面的空间事件。
代码: protected viod Page-Load(object sender,EventArgs e)
{
Response.Write(“Hello!”); //hello可以输出
Server.Transfer(“login.aspx”);//能够成功转移到login.aspx页面
Response.Write(“你好!”);//你好不能输出
}
IsPostBack用法实例
.aspx.cs中代码:
Protected void Page-Load(object sender ,EventArgs e)
{
//只要浏览器发送到服务器的请求报文中包含名为—VIEWSTATE的键服务器就会把当前页面对象的IsPostBack属性设置为true
if(IsPostBack)//用在包含Runat=server的表单页面中,判断是否为点击按钮回传
{
Response.Write(“Page-Load,点击按钮”);
}
else
{
Response.Write(“Page-Load,链接或地址栏”);
}
}
.aspx中代码:
<head runat=”server”>
<title></title>
</head>
<body>
<form id=”form1” action=”” method=”post” >
<div>
<input type=”text” name=”txtName” /><input type=”submit”>
<input type=”hidden” name=”--VIEWSTATE” value=””/>
</div>
</form>
</body>//程序运行结果,一开始显示页面是:Page-Load,链接或地址栏,点击按钮显示Page-Load,点击按钮,地址栏的最后加上—VIEWSTATE(当有Runat=”server”表单时浏览器会自动发送—VIEWSTATE),Page-Load,点击按钮。
Cache(缓存)
如果每次进入页面都从数据库调取数据,在数据防库访问量大的情况下,为是速度变慢,因此可把要输出的数据放在缓存中,这样下次调取就可直接从缓存中输出。缓存就是一种空间换时间的技术。比如CPU的二级缓存、内存、Windows文件都属于二级缓存。
同时存在缓存失效的问题,这是为了保证从数据库读取的数据跟从缓存读取的数据一致。
Asp.net的缓存包括:页面缓存、数据源缓存(不灵活)、数据缓存(灵活)
实例:从程序运行结果可以得出,第一次程序运行是从数据库中取数据,第二次即从缓存争取数据,并且从缓存中取数据的时间要小于从数据库中取数据的时间。
建立aspx.cs页面代码如下
protected viod Page-Load(object sender,EventArgs e)
{
List<MODEL.Classes> List=null;
if(Cache[“datalist”]==null) //检查缓存中是否包含datalist
{
list=new Bell.Classes().GetList();
Cache[“datalist”]=List; //将数据放入缓存
Response.Write(“缓存中无数据,直接从数据库中取数据”+DataTime.Now.Subtract(Context.Timestamp).TotalMilliseconds.ToString());
//Context.Timestamp:上下文当前时间Subtract:减去DataTime.Now.Subtract(Context.Timestamp).TotalMilliseconds.ToString():求的运行时间。
}
else
{
list=Cache[“datalist”] as List<MODEL.Classes>;//读取缓存数据
Response.Write(“从缓存中取数据”+ DataTime.Now.Subtract(Context.Timestamp).TotalMilliseconds.ToString());
}
}
foreach(MODEL.Classes model in List)
{
Literal1.Text+=model.CName+”<br/>”;
}
aspx页面代码如下:
<head runat=”server”>
<title></title>
</head>
<body>
<form id=”form1” runat=”server”>
<asp:Literal ID=”Literal1” runat=”server”></asp:Literal>
</form>
</body>
带缓存失效(即包括缓存优先级)的缓存使用实例:
将上面程序的Cache[“datalist”]=List;语句换成
Cache.Insert(“datalist”,list,null,DataTime.Now.AddSeconds(20),System.Web.Caching.Cache.NoSlidingExpiration);
//null表示缓存依赖项DataTime.Now.AddSeconds(20)设置绝对过期时间为20秒System.Web.Caching.Cache.NoSlidingExpiration滑动过期时间。这句话的意思是:将数据放入缓存,并且设置绝对过期时间为20秒
用带绝对过期时间代替上面程序的那句代码后,程序的运行结果为,一开始运行,取数据从缓存中取得,经过20秒后,再去数据就要从数据库中取,不能直接从缓存中取,同时缓存的数据也会更新。
页面缓存(将页面对象运行后生成的整个页面生成的html代码保存在缓存中,下次有请求来时直接从缓存中取出html代码发送出去)
数据源缓存:设定ObjectDataSource的CacheDuration(缓存时间)EnableCaching=true,这样每隔CacheDuration时间就从数据库查询,否则从缓存查数据。
全局文件:
添加Web->全局应用程序类,注意文件名不要改
全局文件是对Web应用生命周期的一个时间相应的地方。
将Web应用启动时,初始化一些代码写到Application-Start中,用用关闭的时候Application-end被调用。当一个用户请求来的时候Application-Beginquest被调用
当应用中出现未捕获异常时,Appication-Error被调用,用Http.Current.Server.GetLastError()获得异常信息,然后用Log4Net记录到日志中。
---------------------- Windows Phone 7手机开发、.Net培训、期待与您交流! ----------------------