Asp.net本质论(2019.7新总结)

************************Aspx,IsPostBack,aspx增删改查,分页********************

1、

2、将服务器端代码写到前端时,注意

①服务器端代码(c#代码)需要加上<%  %>

②前端代码(html代码)不需要加

 

3、不能单放置一个变量,一定前面加一个=,表示输出

 

4、只要是第一次打开链接、跳转过来的页面,都发出get请求

刷新、表单提交都发出post请求

 

5、使用AppendFormat的占位符方式{0}{1}

 

 

 

*******IIS安装与配置,HTTP协议,一般处理程序,无状态,ASHX查用户列表,URL传参*******

 

1、IIS与FrameWork的安装顺序

 

2、Get、Post请求中,获取请求数据的不同方式:

 

3、get、post请求产生的情形:

 

4、http无状态的原因:

 

5、转换整数的两种方式:

①convert.int32() 转换不成功则返回0,不会报错

②int.Tryparse转换成功返回true,否则为false

 

 

*********ashx增删改,网站与应用程序的区别,编译过程,三层架构下的增删改查*********

1、name与id 的区别

 

2、所有Html控件的value中存放的才是真正的数值

 

3、ashx简单处理页面也可以response各种类型的报文(包括html)

 

4、插入sqlParameter时,其类型都是sql的类型,同时要指定长度

 

5、所有从数据库直接中获取(adpter、table、readerAdpter、rows)的数据类型都是数据库的类型要非空判断时要使用以下方式:

 

6、web网站与web应用程序的区别:web网站由于每次启动只是生成单个页面的dll文件(除非将相应的类库添加到webApp文件夹下),所以不会将其他层(BLL、model等)打包在一起;web应用程序由于可以将所有层的文件打包成一个类库,所以可以像winform一样对其他层的的数据进行访问与引用。

 

 

************************重定向,文件上传下载,绘图,验证码等***********************

1、在表单中上传文件(流)必须按以下方式操作:

使用context.request.files[0]方式在服务器端获取上传的文件流

 

2、防止IE同一链接地址缓存

 

3、上传文件 必须设置enctype=”mutippart/form-data”

 

4、常规下载

相应客户端下载页面(使用.net开发,无论服务器端、还是客户端html都使用相对项目的路径)

 

 

***********************************状态保持***********************************

1、context.request.MapPath与server. request.MapPath使用方法基本一样,使用哪个都行,都是根据项目路径获取物理路径

2、htmlEncode

 

3、当url地址栏出现乱码,那么就使用urlEncode对地址栏进行编码,然后在服务器使用urlDecode进行解码

5、

6、

 

7、sessionID的保持只适合,页面之间的跳转时父子页面之间的sessionID保持

 

8、session中可以保存任何类型的数据:如对象

 

9、页面关闭则保存在页面的sessionid也就消失了(session随着response报文返回给浏览器页面),再开启访问其他页面之前之前的sessionid就找不到了,但是此时服务器的sessionID还存在

 

10、同一个页面,每次开启(关闭网页,又打开)的时候都会分配不同的sessionID

 

11、特性标签与标记接口都是标识该类拥有一定的特性,但是标记接口的方式已经逐步淘汰,而是使用特性标签的方式。比如:[serializable]表示该类可以序列化

 

12、

同一网站的不同网页产生的session可以相互直接获取,但是注意session是有过期时间的。

②只要不关闭浏览器,同一网站的不同页面的sessionID在SessionID有效期内是一样的!

 

 

 

*********************页面生命周期、AJAX*********************

1、Ajax无等待(用户不用等待,可以继续在页面做其他事情)、无刷新(局部刷新)

2、使用jquery的Ajax方式

 

3、response.write(“此用户已存在”)只是给页面返回单一的数据,在ajax客户端使用data可以接收该数据

5、Ajax不是将整个表单提交给服务器,而是只提交指定的键值对;另外由于Ajax提交数据时无刷新,所以服务器也不会返回整个页面,而是只返回Ajax客户端所请求的数据!

 

6、对于aspx页面,返回给浏览器的内容包括:后台父类(response.wirte(“….”))+前台页面子类(页面内容):

注意:可以使用response.End()来结束子类前台页面的输出;ashx就只返回父类的respons.wirte(“…”),因为ashx没有前台子类内容!

 

7、使用c#内置的方法可以将对象集合转化为json字符串,返回给客户端

 

8、如果没有代码前置问题<%  %>、没有服务端控件、完全可以使用html、ajax、json的方式来作为客户端的展示方式

 

 

*************************08_2015.03.02_AJAX2***********************

1、使用jquery时,写下如下 $(fuction() {…….    });中的方法在页面onload开始执行

2、jquery中$(#id) 根据id获取对应的一个标签对象, $(.className)根据类名获取一组页面对象

3、js的引入,要按照js文件之间的相互依赖关系,顺序引入(被依赖的放在前面)

 

4、使用以下方法可以将form表单中的数据与name组成键值对,形成json文件

使用以下方法:

 

6、jquery中各个属性区别: .value是量值  .text是innerText  .html是可以渲染为页面元素

 

7、c#中匿名类与typerscript中的js匿名类很像,且结构适合去装配json数据

 

8、屏蔽href的跳转,只执行其上的click事件的方式:

 

 

 

*********************10_2015.03.05_站点部署、配置*******************

1、cache与Session的区别是cache是共享的,但是session是根据sessionID来识别的

2、网站的cache缓存、web(aspx页面缓存)、objectDataSource缓存、的缓存过期时间的起始时间都是以第一次访问开始算起(此时生成缓存),

3、

①缓存主要是将磁盘数据放置在内存中,以便于快速访问

②网站的cache缓存、web(aspx页面缓存)、objectDataSource缓存,都属于共享缓存

③缓存过期后,缓存中的内容会被清空,然后第一次访问时又会创建新的缓存

 

4、缓存依赖的主要模式,①创建缓存依赖文件②使用cache.insert方式创建缓存

 

5、使用微软自带的Ajax服务端控件,比较厉害!只要将页面中想要进行异步控制的控件放入 updatePanel中即可!

 

6、网站发布,才可以部署,

①发布之前将虚框的文件夹包含在项目之中(否则发布后,不会包含该文件夹)

②每个网站都是一个应该程序,所以要指定端口号

 

7、httpModule是一个aspx处理请求的生命周期事件,如下所示,可以在webConfig中配置httpModule以便对aspx的某个页面周期事件进行干预:

 

8、Globa.asax网站全局文件)中可以在整个网站的级别进行配置、管理

 

注意:Global是对整个网站进行管理,而每个网页是每个用户请求后单独生成一个页面实例(不共享)

 

8、委托其实就是类,可以new

 

9、Delegate、func、action、event的使用场合:

正式开发中只使用系统委托func、action,因为不用定义一堆自定义委托

②事件event是委托的实例,这样只能在类中使用,安全性高!

 

10、

*********************11*******************

1、继承关系,如果自雷protect父类的方法A,那么在子类调用A时,直接去找父类的A;如果子类定义了同名的A方法,那么就直接调用子类的方法。(除非显式的使用base.A(  ))

 

2、页面的page_load事件、preInit、InitComplete事件是页面初始化事件,不是ProcessRequest过程中19个事件中的一部分,

3、C#中virtual和abstract的区别:

https://www.cnblogs.com/wang7/archive/2012/04/17/2453624.html

 

4、C# new和override的区别:https://www.cnblogs.com/tiancai/p/4591731.html

总结通俗的讲:new:父类看不到子类的new的新方法,子类看不到父类被new的方法, 而override: 父类和子类看到的都是子类override后的方法。

接口在相互继承的时候也会隐藏基接口的同名属性或函数,但是对于接口来说很特殊,隐藏对于基接口来说是不起作用的,接口内部的属性和函数都只是声明,它们都指向实现接口的类中的同名实现函数,通过接口调用接口的属性和函数的时候都会去调用实现类中从上到下最先可见的同名函数和同名属性:

 

5、实际开发中,对对请求管道中的19个事件的处理,还是放在Global.asax中进行处理!

 

6、所有需要委托实例的地方,可以由new出一个委托实例(其中参数为签名一样的具体方法名);也可以直接放入签名一致的方法名,而不用new出委托实例

 

8、后台线程随着主线程的结束而结束

 

9、所有Delegate的地方都可以等价使用系统委托来替换!

10、

①线程池中的线程都是后台线程

②什么时候使用线程池,什么时候使用线程:

 

11、方法代码被调用时模拟情况:方法代码区(无论是对象方法、静态方法),在被调用的时候,首先方法会开辟新的栈(同一方法代码被不同对象调用时,开辟新的栈),同时将参数、方法内部变量,调用地址放置在方法堆栈的顶部,方法栈调用完毕销毁,返回调用地址。

 

12、所以当多线程操作一个公共资源时,就要考虑同步的问题(加锁)。

代码块加锁后,只有一个线程可以使用,其他线程需等待该线程执行完毕后才可以使用。

 

13、c#对象的内存分配

1)程序在内存中映像包含5个部分:栈、堆、全局静态区、文本常量区和代码区。

2)对象实例化后,确切地说是实例中的数据成员保留在推中;实例的方法(代码)保存在代码段区中,实例的代码和数据成员肯定是分开存放。

3)方法代码被调用的时候,方法定义的局部变量、参数以及返回地址会被放在堆栈顶部,当方法执行完毕会销毁,返回上一个函数。

回到你的问题:

1)成员变量 int 存放在堆中,不是栈中

2)void Add()肯定在代码区。在代码区的void Add()通过this找到堆中的实例。

 

15、使用系统委托,省的定义自己的委托类型:

16、应用程序底层都是使用Socket进行通信:

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值