ASP.NET个人总结一

来源:互联网 发布:网络教育学费多少 编辑:程序博客网 时间:2024/05/22 14:18

1.

a.mode层->实体层(表格的一行)

 然后,服务/mssqlserver-->开启

 工程文件夹名称不能与项目名称重名//三层架构的命名规范

b.存储过程使用ExecuteScalar不能正确返回新的所受影响的行数-->使用异常来判断

c.客户端JS和服务端ASP对界面控件的内容/属性访问的方式不同 //服务端对页面控件的访问与C#类似

d.谁调用子过程,谁就捕获子过程中throw出的异常

e. 三层架构中,本层的功能可以从其的上一层用需要使用的功能来考虑  //三层架构的设计思路

 

f.  业务逻辑层--->决定对错; 界面/表示层 -->来控制层的展示

g. ASP.NET在服务端产生HTML+CSS+JS然后就回传到客户端

h. 第一次:没有页面信息传到服务器 //相当于ispostback=false

   非第一次:就有页面信息传到服务器

i. 服务器代码执行-->对应pageload会执行

j.  websit 和webAppliction 机制基本相同

k. 控件最好放入层,用层进行管理

l.  ASP网站内容:客户端ASP生成的响应网页(html)+ashx(处理程序//在服务器端)

 

2. 按钮:button(html控件)不能提交,  submitbutton(服务器端控件可以提交)

3.  控件是否可以提交-->只是说明该控件是否可以触发页面提交,发出request、但是并不要求一定有参数传入到服务器

    控件的参数的提交,如果是服务器控件默认或者带有submit功能的控件就可以保存参数和提交给服务器参数,但是有的html控件不具有提交参数功能,就要使用viewstate来间接提交参数(当然也可以使用  http//...?键值对 --->来传输参数,但是这样保密性比较差)

4. html  --->依赖于表单   aspx--->默认有表单,发送request请求也依赖于表单

5.

6.   写html文本格式规则

context.write(@“...'字符串中的字符串'...."+@"...")

7.

a.  如果直接访问aspx,而不是通过网页request来访问,第一次没有context,所以对于aspx处理过程来说就是第一次,

b.  通过地址直接访问aspx,则request中的内容就为空

9.  元素不加 runat=server // 就不提交到服务器,不会主动生成viewstate,也不生成hiddenfield

10. http 不会记住上次的页面内容(无状态),所以要使用表单(表单元素就会记住上次的表单元素的value)--->反应在url中,本地客户浏览器中,

所以非表单元素要使用viewstate来绑定数据

11.  runat=server-->服务器控件有此标志,则只能运行在服务器中,反之控件只能运行在html中

12.   page load--->页面每次刷新都是页面类创建一个新的对象//pageload可以看做是页面的构造函数

13. 页面刷新原理:

a. 每次用页面类创建一耳光新的页面对象,所以每个页面的初始值都是一样的(类内的属性)

b.但是刷新后,会用上一次的ViewState来刷新新的页面 //ViewState原理上保存在本地的浏览器缓存中(或者可以理解为页面类的全局属性,

生存期为:页面打开的期间)

c.表单元素不使用viewstate--->对表单元素无效,非表单才使用viewstate

 

14. cookie&session

a.  cookie 主要在本地中使用,

b. context.response =this.response  //context与this(cookie) 相等

c.  ashx +html--->封装为aspx

d. viewstate-->页面级(页面关闭就消失)

    cookie-->本地级

   session -->站点级

e.  控件的属性 autopostback -->开启就具有submit功能

 

15. ashx-->可以处理多种文件类型 (htm,image,xml...)

16. ashx 返回一个上下文context,其中有返回的各种流(可以视为返回值),可以使用context.response.outstream来返回给页面

17.

a. aspx可以调用ashx处理程序

b. aspx相当于一个页面模板

c. html控件要想服务器识别,就要加入runat属性

d. html中js写的事件,如果不提交的话就不会被服务器处理

e. aspx中可以加入js和html ,前置的C#...,且onclientclick(直接写js)  //所以首先要把aspx当做html来使用

f. 如果不能直接提交表单,可以使用get方式给ashx或者aspx用键值对的方式提交元素的value,eg:

...ashx? id=12&value=..

 

18. 页面中可以保存数据的节点:

viewstate ,cookie, session ,表单元素

19.

a.  cookie,session,都是页面元素,可以使用this.cookie ,this.session来调用

b. hshx中不能直接使用session,要引入requir.session名空间

c. html控件加 runat=server属性-->就可以像服务器控件一样被直接使用ID进行操作,否则就得如js中使用一样(getElementByID来得到)

d. pageload是在服务器中执行的,有服务器生成一个新的页面实例(pageload相当于页面初始化)

e.  一般需要服务器处理相应的控件都是submit,eg:

    <input type="submit"  value="button" id="button1" >   //此ID是给服务器事件响应来识别的

f.   如果不加submit则如控件的onclick-->就是有本页的js客户端处理的(html中,如果是aspx中则客户端控件响应事件是onclientclick)

g.   aspx的页面C# onclick-->默认就是有服务器处理的  -->转化为html后会转化为submit

h.  无sumbit功能的控件元素,如果想submit,则应在onclick事件中引发表单提交事件

i.  aspx服务器控件的C#事件,不会显式显示在html格式的元素onclick中,会有页面内部的机制在submit时,将页面的触发事件的sender交由服务器处理来调用相应的handle来处理

j.  非提交型的,如果也想让服务器来处理,则也应在本地事件中触发 form.submit--->来引发表单的提交

 

20. httpwatch工具

21. 服务器控件可以引发:服务器响应,客户端响应(属性clientclick,验证是否客户端有响应只需看html源码中是否有onclick)

22.  aspx中 this.response.write(....)//写入当前对应页面的头部

23. js代码可以写在html任何位置,主要看执行顺序的需要

24. 服务器控件先执行clientclick-->成功后才执行服务器的响应onclick

25. request提交的除了表单外,还有对应的页面的一些信息,eg:validateRequest...

26.服务器元素控件(如超链接控件) 隐藏后客户端不可见,但是客户端html一些隐藏的元素,在html源码内是可见的

27.  ashx中response.write ...写入到整个页面  ;  aspx中request.write将写入的内容插入当前页面的顶部

28.  cookie, html ,session -->可以异步response到客户端(不用同时response)

29. 网站发布后应用程序根目录和websit根目录抑制,但是不发布则不一致

30.  当前路径-->当前打开网页的路径

       绝对路径就是程序路径

31.  request/response -->可以看做是静态对象

32.  aspx中response.write(..)  写入到request网页的上面,插入html

33.  物理路径就是硬盘路径 ;虚拟路径是以当前程序路径而言的,

34.   谁来请求-->request.urlRelferer

       urlRefence--->访问链接的上一个url

35.   ~(虚拟根目录) -->用于服务器控件

36. 所有对象都可以使用流,一般文本,html不用留(因为文本都是编码的,单个字节有意义,所以不用流) 但是图,视频,单个字节无意义所以要用流;

     文本型的一般使用write

37.  MapPath(在main.aspx代码中) ../../index.aspx  -->以当前的MapPath所在当前代码页面的位置为基准路径(main.aspx的路径)

38.  服务器html中只有存在form才能将数据(元素)提交

39.

a.静态页面只有一个

b.aspx动态页面可以生成多个实例(aspx也叫页面模板)  

 

40.         文本request交由aspx处理  <------文本,多媒体------>多媒体request交由ashx来处理

                                                           html页面

41.  aspx-->就是page

42.  reflector 可以反编译dll

43.  页面有aspx类的子类生成(不是aspx模板自身的类)

44. 

a.  label , literatral(如果不设置的话)中的text放入js脚本则会执行

b.  但是literatral中则不会执行(如果设置为只显示字面意义的话)

 

45.

c. 前置技术<%c#代码  %> // 前置技术可以将c#代码嵌入aspx中,<%   %>中显示变量或者方法结果的字符

d. 所以在aspx中可以同时嵌入JS,C#,CSS

e.面前前置技术可以直接使用aspx.cs中的内容(包括方法,页面属性)

46.  aspx中可以使用前置技术

47.  request,response都是分步式的,-->页面先对各个部分的内容cache,然后再整体显示出来

48. 页面中,动态内容尤其是image用ashx

49.  asp的数据控件原理:

dataList --->数据显示控件

sqlDataSource--->数据源控件(将sql查询的结果。eg:虚拟表table进行储存,类似于dataset)--->然后显示在dataList中

 

50.  this.fileUpload.postedFile.SaveAs()//  postedFile就是上传的各种文件

51. 各个功能共用的时,eg:一个dataList组合控件中内含有imageinButton时,imagineButton应绑定commandArgument--->来对一个list中的各个控件以示区别

52.  jQuery可以向前兼容

53. sql中同时对多个表进行操作时,可以使用事物(尤其是可能有风险的操作,可以利用回滚机制)进行操作

54. 对数据库操作的错误几率很高,所有要使用异常处理

55.

如果要在页面写入新的内容(尤其是html)则要使用this.response.write来响应

如果只是更新页面元素,只要让   服务器控件.属性=...即可,eg:  this.img=img.ashx

56.  aspx 中好像将response 封装了 ,如果使用 控件.属性="  "  aspx可能会在下一步将其转换为response;

      每次页面的response都要重绘页面(可能有cache的部分就不用重绘)

57.  repter

a. aspx中"  "和 '  ' 都可以,

b.  repeater.dataSource

     repeater.Binding      ----->调用后与数据库进行重新连接,此时前台的数据(html)才能进行更新(所以要放在需要更新页面数据的事件中)

c. repeater.Item--> 是指模板的每一行:

   普通项 , 交替行 , 表头, 表尾都是一行

58.  变量首字母小写; 方法首字母大写

59.  repter控件处理有规律的页面(尤其是循环的)比较好,但是无规律的不太适合

60. C#中自动生成代码

a. 项目中要使用的功能类就直接上车Class就行

b. 数据库table中的外键-->要生成对象(因为外键可能引用别的表的对象,别的表也是一个类)

61.验证控件

a. isValidate是针对同一页面中的所有验证控件-->所以要是在同一页面中有相互不相关联的验证-->要进行分组

62. 去掉IE的javascript:  禁用java控件 、禁用活动控件

63. 客户端(html),可以识别aspx控件(由framework 转化为html相应的控件)和html控件;但服务器只用识别aspx控件

64.  自定义验证:服务器和客户端验证方法的签名应一致

   客户端验证: funtion validate(scr ,args) {

                 arg.values  //封装传入的值      }

65.  form(表单)中的元素一般都用value取值

66. 母版页

a. 母板页不能直接运行

b. html中所有的元素内容-->都用div去规划

c.  ~/imge...只有服务器识别

d.   ../imge...  html 的根目录,html可以识别

 

67. 内容页调用母板页的原理:

先执行内容页的pageLoad,然后执行母板页的pageLoad

68.  Asp中许多数据绑定的控件都与手控reaptor很像,所以绑定展示的过程时:

a. 先使用数据控件自动绑定

b. 然后对各个行(item)根据自定义的需求进行修改

69. 数据控件的数据流程:

从数据库中读取数据-->将数据读到内存中--->ObjectDataSource(相当于dataTalbe)--->ListView 

 

70. ListView数据绑定展示的内部机制:

1.ListView的各项item,尤其是DataItem 在ItemDataBound事件(每项绑定后发生的事件)时:是逐行进行的

2. ListView有三种Item: DataItem、emptyItem、InsertItem