---------------------- Windows Phone 7手机开发、.Net培训、期待与您交流! ----------------------
WebForm中包含两个文件:aspx(前台文件)和aspx.cn(后台文件)。
aspx等于html+js+css。
WebForm前后台文件被访问时,会被编译成类(不是相同的类),前台类继承于后台类。被访问时服务器会创建前台页面类对象,作为处理浏览器请求的对象。
前台类对象是如何结合后台类的方法生成整个页面的HTML代码?简单说是:被请求时页面控件树的生成,控件树负责组织整个页面的内容(-BuildControlTree()—生成控件树的方法)。具体是:页面类对象,通过控件树的方式,帮我们封装了整个页面的HTML源代码和c#代码。都封装到页面类对象的控件集合属性中,那么要生成HTML代码的时候,只要循环遍历整个控件树,并调用每个控件的-Render-方法为每个控件生成HTML代码,就可以拼成一个完整的页面的HTML代码了。
前台页面类->后台页面类->Page->TemplateControl->Contron(包含ControlCollection集合)。其中->是继承于的意思。
后台文件aspx.cs可以通过runat=”server”调用前台控件如:在aspx中有一行代码
<input type=”text” id=”txtName” runan=”server”/>
后台代码aspx.cs中相应代码如下:
this.txtName.value=”你好!”;程序运行结果是在text文本框中显示“你好”。
前台页面访问后台页面的方法,是把后台页面设置为public或protected,并且要写到<% %>之中。另外在<% %>中可以任意写C#代码。
程序实例如下:
aspx.cs中代码:
protected string strString=”哈哈哈哈哈”
protected string Hello()
{
return “Hello!’’;
}
aspx中代码如下:
<head runan=”server”>
<title></title>
<head/>
<body>
<form id=”form1” runat=”server”> //runan=”server”表明这个前台对象已经成为后台的非私有化变量
<% for (i=0;i<5;i++)
{
Response.Write(i+Hello()+strString+”<br/>”);//说明在前台的<% %>中不仅可以访问后台的非私有化方法,也可以访问后台的非私有化变量。
}
%>
<%=strString%> //这种尖括号等于号的方法可以在前台简单的输出字符串,它相当于<%Response.Write(strString);%>
</form>
</body>
总结:1 浏览器和服务器的交互是通过Socket
2 浏览器和服务器的交互语法:http
3 浏览器要和服务器交互的目的:获取服务器资源(html,图片,js,css等)
4 服务器要做的事情就是想尽办法满足浏览器的要求,所以一旦浏览器的请求时动态页面的时候,服务器就要创建页面类对象并执行里面的方法,最后生成的html代码要返回浏览器。
Request成员Request.UrlReferrer:请求的来源.
取得请求来源string url=Request.UrlReferrer.ToString;
url.IndexOf(“goole.com.hk”)>-1这句话表明,取得的请求来源url中不包含goole.com.hk
Resquest.UserHostAddress 获得访问者的IP,是通过和浏览器通信的套接字的RemoteEndPonit(远程网络节点)获得。
aspx.cs中有下面程序
protected void Page-Load(object sender,EventArgs e)
{
for(var i=0;i<10;i++)
{
Response.Write(“我爱北京天安门”+iToString);
Response.Flush();//立刻输出缓存数据
System.Threading.Sleep(1000);//等待1秒钟输出一次
}
}
设置Response.Buffer、Response.BufferOutput属性可以不用把数据存在缓存里,直接输出。
Response.Clear清空缓存
Response.ContentEncoding输出流的编码
Response.ContentType输出流的内容类型(如text/html 普通文本:text/plain 图片:image/JPEG)
Response.OutputStream输出流
Response.End终止程序
---------------------- Windows Phone 7手机开发、.Net培训、期待与您交流! ----------------------