概述
关于这博客的理论知识,大家可以看上一篇博客,在这里就不重复了。
用户控件和母版页
用户控件提供了小范围的风格控制和更灵活的代码重用;母版页提供了整个页面级的风格控制和代码重用。
用户控件的创建
项目名称上右击—添加—新建项—Web用户控件;通过把通用的控件组合在一起,编写相应的事件执行代码,来完成用户控件的创建。
用户控件的使用
直接往Web页面上拖放用户控件就可以使用,Web页面获得用户控件上的属性的过程,向往自定用用户控件中添加相应的属性,然后,在Web页面就可以访问了。具体如下:
用户控件类中添加的属性
public string age
{//只读和只写只需写其中的一个就可以了
//读属性
get
{ return TextBox1 .Text; }
//写属性
set
{ TextBox1 .Text = value; }
}
Web页面中的使用
protected void Button1_Click(object sender, EventArgs e)
{
WebUserControl11.age = "你好!";//WebUserControll1为用户控件的ID
}
母板页的创建
项目名称上右击—添加—新建项—母版页;想设置Web网页一样设置就行,不过需要说的是:<asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">这个为占位符,是为使用该模板页的网页站的的位,模板页不能在里面设置相应的控件</asp:ContentPlaceHolder>,VS 2010会自动加上占位符,但是在子母版中需要手工的写上。
套用母版页的Web页的创建
项目名称上右击—添加—新建项—使用母版页的Web页面—选择相应的母版;创建子母版的时候,就是选择嵌套的子母版页。
下面是关于母版页和引用母版页的Web页面的界面设计代码的对比
母版
引用上母板的Web页面
获得母版页中控件属性的代码如下:
Calendar ca = (Calendar)this.Master.FindControl("Calendar1");
上面的代码可以访问母版中控件属性,注意,如果是Web页面套用的是子母版,那么就不知道怎么访问相应的控件了,希望知道的告知。
Response对象
用于输出数据到客户端,包括向浏览器输出数据、重定向浏览器到另一个url或向浏览器输出Cookie文件。
输出具体数据
Response.Write("显示在浏览器中");
输出含有特殊字符串集合的数据
Response.Write("<A Href=default.htm> 带有HTML标签的数据 </h3>"); Response.Write("<script language=javascript> alert('带有客户端脚本程序的数据') </script>");
浏览器接收到字符串后,马上进行相应的解释,然后将结果显示到浏览器上。
输出文件
Response.WriteFile("file.txt");
将文本文件的所有内容直接写入输出流传送到浏览器那。
使网页转向(输出整个静态页面)
Select Case txtName.Text
Case "adimn"
Response.Redirect("ManagePage.aspx?uid=" + txtName.Text + "&pwd=" + txtPwd.Text)
Case "teacher"
Response.Redirect("TeacherPage.aspx?uid=" + txtName.Text + "&pwd=" + txtPwd.Text")
Case Else
Response.Redirect("StudentPage.aspx")
End Select
Request对象
主要功能是从客户端得到数据,包括基于表单的数据和通过URL发送的参数列表信息,还可以接收来自用户的Cookie信息。
Post和Get的区别
ASP.net中通过表单向服务器端发送数据,其发送数据方式有两种(沿用HTML的):Post和Get。Get是将传送的数据附加到URL后面;Post方法是将传送的数据,封装为一个数据集进行传送过去。
Post方法时信息的读取
string strUserName = Request.Form.Get("txtUserName").ToString();注意form相当于一个集合,所以,有多种方法获得相应的数据。string strUserName=Request.Form["txtUserName"].ToString();
Get方法时信息的读取
string strUserName=Request.QueryString["txtUserName"].ToString(); string strUserName=Request.QueryString.Get("txtUserName").ToString(); Request["txtUserName"].ToString();
小结
无论哪种提交方法,都可以用这种方法:Request["txtUserName"].ToString();获得数据。
Server对象
提供服务器功能(交互)的对象。
属性
MachineName:获得服务器所在计算机的名称
ScriptTimeOut:获取和设置请求超时(以秒计算)
方法
UrlEncode和UrlDecode,HtmlEncode和HtmlDecode:上篇博客提到过,数据在传送中的统一编码方式,这个就是将那些特殊的变成普通的传送,到了之后,将那些普通的再进行逆向工程,得出其真正的数据,防止那些特殊的字符出现乱码的情况。从这个我们可以推出,现在http传送的数据的编码方式,仍然是ASCII码,这样才会出现那些特殊字符(汉字)没有相应的码,而被乱编了,这样显示的时候,才会出现失真的情况出现。
MapPath:将虚拟路径或相对于当前页的相对路径转化为Web服务器上的物理文件路径。Server.MapPath("/default.aspx");
Application对象
应用程序的集合,Application对象相当于是一个集合,在他里面能够记录一组变量,这组变量都是用Key Value这种结构组成的,可以被所有客户端用户(每一个套接字)操作里面的数据。
基本操作如下:
添加或创建一个对象
Application.Add("key",value);或Application("key")=value;
获取Application集合中某个对象的值
int i = (int)Application("key");或int i = Application.Contents["key"];或int i = Application.Get("key")
因为集合里面的都是对象,需要对其进行类型转换。
更新集合中的对象值
Application.Set("key",value);或Application["key"] = (int)Application["key"] +1;更新的时候最好加上锁机制:application.Lock()和Application.UnLock()。
移除对象
Application.Remove("key");移除指定对象。Application.RemoveAll();或Application.Clear()移除所有对象。
基本事件
Application_Start,Application_End和Application_Error。这些事件在Global.asax文件中。Global.asax文件时一个可选(可以没有,有只能有一个)的文件,该文件包含响应ASP.net应用程序或HTTP模块所引发的应用程序级别和会话的代码(事件)
Session对象
保存与当前用户会话相关的信息,与Application类似。当前用户就是一段时间内的一个套接字。这个对象使当前用户在应用程序的页面之间跳转时,存储在Session对象中的变量不会被清楚。
Session的操作和上面的一样,只要把Application换成Session就行了。Global.asax文件中也有相应的Start和End事件。
Cookie对象
集合对象,和Application和Session对象很类似,都可以用来保存数据信息,但Cookie是将数据存放于客户端的硬盘上,而Application和Session对象是将数据存放在服务器端。
Cookie分为会话Cookie和持久性Cookie。会话Cookie在会话结束后就没有了;持久性Cookie在指定的时间就没有了。
创建单个值的Cookie
Response.Cookies["UserID"].Value = "1";
Response.Cookies["UserID"].Expires = DateTime.Now.AddMonths(1);
这两段代码的意思就是,向浏览器输送一个单值Cookie,有效时间:从今往后的一个月。这段代码执行后,浏览器就会接收到那个Cookie,此时,不用我们在客户端编写任何代码,浏览器会自动将Cookie的相应信息存放到硬盘的某个位置,当再一次访问这个网站里的任何一个网页时,浏览器都会自动的发送相应的Cookie。
接收单值Cookie
string strCookie = Request.Cookies["UserID"].Value;
创建多值Cookie
Response.Cookies["V"]["UserID"] = "1";
Response.Cookies["V"]["UserPWD"] = "2";
Response.Cookies["V"].Expires = DateTime.Now.AddMonths(1);
接收多值Cookie
HttpCookie objCookie;
objCookie = Request.Cookies["V"];
if (objCookie == null)
{
Response.Write("Cookie为空");
}
else
{
string strName = objCookie.Values["UserID"];
string strPwd = objCookie.Values["UserPwd"];
Response.Write(strName.ToString());
Response.Write(strPwd.ToString());
}
配置文件
只说一下Web.Config的配置,详细内容和解释,请看代码和相应的注释
<!--配置文件的根节点-->
<configuration>
<!-- 对整个应用程序的配置设置 -->
<system.web>
<!-- 应用程序的所有页面设置缓存;开启ViewState功能 -->
<pages buffer="true" enableViewState="true" />
<!-- 浏览器访问出现错误时,服务器会经友好的界面返回浏览器 -->
<customErrors defaultRedirect = "自定义友好错误界面的url" mode="On|Off|RemoteOnly">
<!-- 当错误页的HTTP状态码为500时,浏览器显示url;否则显示默认 -->
<error statusCode = "500" redirect ="url"/>
</customErrors>
</system.web>
<!-- 这个是VS 03版本的格式:用户自定义设置 -->
<appSettings>
<add key = "strConn" value = "server=.; uid=sa; pwd=password; database=pubs"></add>
</appSettings>
<!-- 和appSettings的功能一样:用户自定义设置;是VS 05及以上的版本的格式 -->
<connectionStrings>
<add name= "strConn" connectionString= "server.; uid=sa; pwd=password; database=pubs"></add>
</connectionStrings>
</configuration>
从配置文件中获得自定义区域中的值
首先是添加引用:System.Configuration。
当访问<appSettings>节点中的变量时的代码如下:
//string a = ConfigurationManager.AppSettings["sqlConnectionString"].ToString();
string a = ConfigurationManager.AppSettings["sqlConnectionString"].ToString();
当访问<connectionStrings>节点中的变量时的代码如下:
//string myCon = ConfigurationManager.ConnectionStrings["strCon"].ConnectionString;
string myCon = ConfigurationManager .ConnectionStrings ["strCon"].ToString ();
关于配置文件的一些其他内容,你可以参考这篇博客:
VB.net配置文件。
学习过程
先是看《天空穿》那个视频,只是看了一下,里面的例子没有敲,然后就是看《北大青鸟》(里面的例子大多都实现了),然后,就是总结,总共时间用的很长,从7月20到8月10号,差不多一个月吧,排除开会时间,排除学英语时间后,学习ASP.net的时间也是用的不少,我的天啊,不敢细想了。以后的学习过程中视频将不是重点,吸收多少算多少。
总结
需要学习的东西还很多,继续加油!