asp.net初识

 请求=========处理=============响应        

  不是服务器读网页、表单,而是我们向服务器提交数据  

1、asp.net 服务器端控件是ASP.NET对HTML的封装,ASP.NET会将服务器端控件转换成HTML代码返给浏览器。  

2、在服务器端控件的visible属性如果设置为false,那么不会生成相应的HTML代码,控件的HTML都不存在;这与前台的display="none";不一样,后者还会存在相应的html代码  

3、aspx文件:用于表述网页的样子

4、aspx窗体中的控件与html中扽控件是一样的 

5、Webapplication与Website的区别:  a、(Webapplication)在文件中修改代码后必须得重新以浏览器的形式查看才能看到修改后的效果;Website刷新即可看到效果(每次修改以后点击"生成解决方案"也能立即看到修改效果).  b、(Website)不需要创建命名空间,但是不利于工程化开发(比如代码出错不容易发现,代码不分命名空间)  

6、一般处理程序:   ashx: a.html页面中from表单提交地址为(action="XX.ashx")一定要设置name属性  b.在ashx中,通过context.Request["标签name值"];得到文本框输入的值;通过context.Response.Write("XX");向浏览器发送数据;通过  

7、aspx中将Web虚拟路径(/images/1.jpg)转换为磁盘全路径(d:/wwww/mysite/images/1.jpg)的方法是    HttpContext.Current.Request.MapPath("/XXX.html")。      ashx中:   //读取html模版             string path = context.Server.MapPath("No2.html"); //获得相应的html路径             string concent = System.IO.File.ReadAllText(path); //读取html文件      concent = concent.Replace("占位符",变量);          //替换html中占位符的值      context.Response.Write(concent);                      //输出                                               string name = context.Request["uName"];             if (string.IsNullOrEmpty(name))             {                 context.Response.Write("直接进入...");             }             else             {                 context.Response.Write(name+"您好");             }  

8、asp.net:PostBack——提交回来(刚进入页面的时候,和输入后的内容重新提交给处理程序)  ispostback:属性的值来确定页面是第一次呈现还是正在响应回发。IsPostBack=false时表示是第一次请求,当IsPostBack=true时,表示是非第一次请求。         Http 是请求、响应的模型,服务器不会来读取浏览器的网页,能够得到的就是客户端网页提交过来的数据         如果访问 Hello2.ashx ,多次点击刷新,都是 “ 直接进入 ”         如果提交表单,再多次点击刷新,都是 “ 提交进入 ”         所有表单都是提交的以 name 为 key ,以 value 为值的内容,其他属性是不会被提交到服务器的。    

9、get与post:get是通过url传递表单值,post通过url看不到               get表单域的值; 传递的数据量是有限的,如果要传递大数据量不能用 get,比如type="file"上传文章、type="password"传递密码或者<textarea>发表大段文章,               post则没有这个限制;post会有浏览器提示重新提交表单的问题(是否刷新表单),get则没有(加分的回答)。对于Post的表单重新敲地址栏再刷新就不会提示重新提交了,因为重新敲地址就没有偷偷提交的数据了

10、为什么单使用div服务器取不出值:因为不是服务器读网页、表单,而是浏览器搜集表单中输入的数据,形成请求参数发给服务器。没有把div当前的innerText发给服务器  没有办法将div的值提交给服务器,只有设定了name的input、select、textarea的value属性才会被提交给服务器       解决方法:浏览器需要用一个隐藏字段将上一次的值保存下来——<input type="hidden" name="number" value="@result" />  <div>@result</div>,使得隐藏字段的value与div中的值相同  

11.ViewState原理:Label版本的值存到了ViewState中,TextBox版本的不用存,因为TextBox就是input自己就会提交给服务器,不需要隐藏字段 说Input版本(TextBox)自增和Div版本(Label)的不同    他就是用来存一些没有value的标签的值  

12.aspx(webform)中设置控件的背景颜色: txt1.BackColor = System.Drawing.Color.Red;   设置宽度:txt1.Width = new Unit(0,UnitType.Pixel);——宽度为0,单位px    txt1.Width = new Unit(txt1.Width.Value+10);——控件的宽度每次增加10  

13.aspx页面顶部的配置文件增加EnableViewState="false" 意味着页面禁用viewstate,依赖于viewstate的将失效   禁用ViewState以后TextBox版本不受影响,Div版本受影响,因为input的value不依靠ViewState。禁用整个页面的,在aspx的Page指令区加上EnableViewState="false" .内网系统、互联网的后台可以尽情的用ViewState。   即使禁用viewstate在请求没有结束之前,也能读出设置的值   当禁用viewstate就读不到上次客户端的值,写入到浏览器的值不会受影响  

14.HTTP无状态协议:服务器不记的上次给了浏览器什么,浏览器需要记住这些值(input就是记到value中,对于其他的值就要放到隐藏字段中,比如ViewState),下次再提交服务器的时候就要把上次的值提交给服务器,让他想起来。   如果要知道上一次的状态,一个方法是在对浏览器响应结束之前将状态信息保存到页面表单中,下次页面再向服务器发出请求的时候带上这些状态信息,这样服务器就能根据这些状态信息还原上次的状态了,类似于去看病的病历本。  

原文地址:https://www.cnblogs.com/zhaochuang/p/3319107.html