日期:2014-05-17  浏览次数:21006 次

asp.net 方法与技巧的总结
点击打开链接一.协议部分:
提到网站编程,先说下HTTP 协议。我们都知道网站是基于HTTP协议的。(注意是Http,不是https ,https 是基于http的运用SSL技术,实现网站通讯的安全技术 )。下面是HTTP典型的请求消息。


GET 是常见的请求方式,此外还有POST请求方式。
HTTP 协议是无状态的连接,就是“请求”,“响应”的工作方式。“请求”(Requst),“响应”(Response)。请求的一般是客服端,响应的大多数是服务器。所以在写ASP.NET 程序的时候要记住这两个关键词所代表的含义。说了这么多就是让大家记住HTTP协议的一些特点。是“请求”,“响应”的工作方式。这也为什么有Cookies 这项技术。由于无状态协议就不能存储用户的状态,区分用户的连接。为了区分用户的状态和连接,于是就有了Cookie
了。这也是Web 窗体三种传值,或是传参的一种。 参考:(“?”传参,Session[“”] 传参)。
Cookies是保存数据的一种方式。所以还是使用全局变量进行程序处理的一种方式。




Cookies 的用途,像是购物网,网站的投票程序的设计 等????。
例:


public partial class _Default : System.Web.UI.Page 
{
    int a = 0;  //此处我定义了一个全局变量,
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            a++;
            Response.Write(a.ToString ());//那么我每次触发执行的时候 a会是多少?
            binder();
        }
        a++;
}

答案是a就1; 为什么,这就是http 的无状态的连接。怎么解决,Cookies 就是一种很好的解决办法。


怎么样在客户端上生成一个Cookies呢?代码如下:
Response.Cookies["name"].Value = TextBox1.text; // 在客户端生成Cookies
            Response.Cookies["name"].Expires = DateTime.Now.AddMinutes(1); //添加过期的时间


怎样在得到客户端的Cookies呢?
Request.Cookies["name"].Value;
在这里已经介绍了ASP.NET的内置对象的Cookies 对象。ASP.NET(内置对象: Request,Respose,Session[],Viewstate)


二.Web窗体代码部分
   WEB窗体页不但可以包含静态内容,而且可以包含使用"<% %>"或“<script></script>”标记的内容。
1.代码声明和代码呈现语法
代码声明块必须定义在<script>标记中,并且必须使用“runat=server”属性进行标记。
语法:
<script runat="server" language="codelanguage" Src="pathname">

       window.location.href="www.52mvc.com";

       代码.....

</script>


代码呈现块定义在<% %>标记元素中。当WEB窗体页呈现时,执行该标记元素中的代码。
语法:
<% 内联代码 %>
<%= 内联表达式 %>
代码呈现块包含两种样式:内联代码和内联表达式。
内联代码定义能够独立运行的行或代码块。
代码呈现块中的代码通常在WEB窗体页的呈现阶段执行,同时计算内联表达式的值,并将计算的结果作为输出内容。
实际上,内联表达式是调用Response.Write()方法的快捷方式。
例如:
<%= "喜欢你" %>
等价于
Response.Write("喜欢你");




2.窗体代码的执行过程。(了解部分)
1).初始化页面
一旦某个WEB窗体页发生请求时,ASP.NET将首先确定是否要分析和编译该页,即确定该页的请求是全新的请求还是回发请求(由页的IsPostBack属性指定)。如果该页从来没有被请求,分析器和编译器将分析和编译该页,否则将使用该页已经编译好的代码。
经过上述阶段后,页将进入初始化阶段。在此过程中,页将创建其所有对象,并初始化对象的值,同时初始化该页的控件(服务器端控件和客户端控件),并将主题(Themes)应用于页。在此过程中,页将触发两个事件:Page_PreInit和Page_Init.其中,Page_Init.事件将读取或初始化控件或对象的属性,Page_PreInit事件执行以下操作:
A.根据ISPOSTBACK属性的值判断页是否是第一次请求
B.创建或重新(如果是第一次请求)创建动态控件
C.动态设置页的基本属性
D.将主题(Themes)应用到页
E.读取或设置配置文件属性值


2)载入页面
WEB窗体页初始化之后,ASP.NET分析器或编译器将载入页。在此过程中,如果当前请求是回发请求,则读取页和控件的视图状态(ViewState),并将状态的值应用到页和控件,在此过程中,页将触发Page_Load事件,该事件读取并更新控件属性。


3).处理事件
WEB 窗体页载入之后,将处理页的回发事件。在此过程中,如果当前请求是回发请求,则将触发页或控件定义的事件处理程序。


4).预呈现页面
WEB窗体页处理回发事件之后,将预呈现页面。在此过程中,页将执行其被呈现之前的处理步骤,此时,页将触发Page_PreRender事件(该事件对页的内容做最后修改)。


5).呈现页面
WEB窗体页在预呈现后,将开始呈现页面。在此过程中,页首先保存页及其控件的视图状态(ViewState),即把视图状态值序列化为一个字符串。该字符串将作为页的一个隐藏域,并保存到页的HTML代码中。处理视图状态后,页将创建页的HTML代码,并输出到客户端浏览器,其中,输出过程由页的Response对象的OutputStream属性实现。


6).卸载页面
WEB窗体页的最后一个阶段是卸载页面,在页面释放时发生。在该阶段中,页将执行最后的清理工作,释放页占用的资源等。页将触发Page_Unload事件。该事件执行以下操作:
A.关闭打开的文件
B.关闭打开的数据库连接
C.完成日志
D.完成特定的任务
三.窗体传值(问题)


三种传参方式: ?问号传参 ;Session[]传参 ,Cookies 传参已经介绍过了。接受端分别是
1.Request.QueryString["xxxx"] 2. Session["name"]   3.Request .Cookies["name"].Value    
以上是三种传参的格式,不是可以使用的代码。
四.数据绑定控件问题
<asp&g