zl程序教程

您现在的位置是:首页 >  后端

当前栏目

【C#】asp.net

2023-09-11 14:14:50 时间

1加粗样式
在这里插入图片描述
2.执行顺序
1.页面刚打开时的执行顺序:head里自动执行的JS==》Page_load事件==》body里自动执行的JS==》window.onload
2.点击服务器按钮时的执行顺序:前台服务器按钮==》head里自动执行的JS==》后台服务器按钮==》body里自动执行的JS==》window.onload

3.点击普通按钮时的执行顺序:前台普通按钮

4.Page_Init先于Page_Load先于Page_PreRender被执行
3.GridView点击行触发SelectedIndexChanged事件
http://xieycms.blog.163.com/blog/static/281213902010123105350751/
4.asp获取ajax数据
在aspx的后台可以用如下的方式来捕获参数:
workstateValue = Request.QueryString[“workstateValue”];
1
在一般处理程序中可以用:
return Context.Request.Params[name];
5.response.write()返回目标页
http是一个短链接一次请求一个回复就断开了。
是谁请求的就返回给response的写出就返回给谁。
所以是ajax发起的请求当然是ajax对象接受返回数据才算一次完整的请求。
如果是浏览器页面发出的http请求当然就是浏览器页面接受返回的数据,也就是document接受。
在浏览器中目前发起http请求的只有两种方式,一种是页面发起的http请求,一种是ajax发起的http请求。
其它客户端也能发起http请求。
谁发起的由谁接受。
6.response的contentType 几种类型
ajax开发中在请求服务器端的响应时, 对于每一种返回类型 规范的做法是要在服务端指定response的contentType 的. (当然 不指定绝大多数情况下也没什么问题 尤其是返回"非xml"的时候) 。
常遇到下面的几种情况:
1、 服务端需要返回一段普通文本给客户端,Content-Type=“text/plain”
2 、服务端需要返回一段HTML代码给客户端 ,Content-Type=“text/html”
3 、服务端需要返回一段XML代码给客户端 ,Content-Type=“text/xml”
4 、服务端需要返回一段javascript代码给客户端
5 、服务端需要返回一段json串给客户端
我们主要讨论返回javascript代码和Json对象的情况。
javascript 的 contentType 按最标准的写法 应该是 application/javascript。而常用的 text/javascript 已经被 rfc定义为废弃的。
但是 在这里暂时不建议使用 application/javascript . 大家还是继续使用 text/javascript 为好. 因为很多老旧浏览器并不支持 application/javascript . 而所有浏览器都支持text/javascript. 在标准和广泛的兼容性之间 还是暂且选择后者吧。
json 的 contentType 常见写法有 : text/json & text/javascript .
但是 这个 text/json 其实是根本不存在的, 而 text/javascript 在有些时候客户端处理起来会有歧义. 对于json的contentType , rfc里定义的标准写法是 :application/json.
在这里毫无疑问 我们应该选择标准写法的 application/Json。
7.value,innerHTML
表单控件value,非表单控件:innerHTML
:value
:value(取值)、innerHTML(取文本)
8.JS获取子节点、父节点和兄弟节点的方法实例总结
https://www.jb51.net/article/143286.htm
9.ajax请求的data数据格式
https://www.cnblogs.com/yangguoe/p/8986108.html
10.ajax与后端通信的三种方式 带[WebMethod]用rutrun回传数据?
https://blog.csdn.net/m18633778874/article/details/79659144
11.ASP.NET Global.asax详解
https://www.cnblogs.com/dayang12525/p/6323164.html
12.三层架构
三层结构符合“高内聚、低耦合”的特点,每个层职责明确。利用分层,降低了层间依赖,使系统的耦合更加松散,从而使系统更加容易维护和复用。

三层:
显示层(UI)、业务逻辑层(BLL)、数据访问层(DAL)再加上实体类库(Model)组成

1.显示层(UI)
  (1)在UI中添加对Model、BLL的引用
  (2)编写代码传递数据给BLL层
  职责:①向用户展示特定的业务数据
     ②采集用户的信息和操作

2.业务逻辑层(BLL)
  (1)先建立业务逻辑层类库BLL
  (2)在BLL中添加对Model、DAL的引用
  (3)建立业务逻辑类
  职责:① 从UI中获取用户指令和数据,执行业务逻辑
     ②从UI中获取用户指令和数据,通过DAL写入数据源
     ③从DAL中获取数据,以供 UI 显示用

3.数据访问层(DAL)
 (1)先建立数据访问层类库DAL
 (2)在DAL中添加对Model的引用
 (3)建立数据访问类
 作用:跟数据源打交道
 职责:执行对数据的操作(增删改查)

机制:UI –> BLL –> DAL –> BLL –> UI

4.实体类库(Model)
  作用:主要存放数据库中的表字段,对其字段进行封装
  
三层之间的引用如下:
Model 不引用任何项目
DAL 引用Model (以及解决错误时 引用的System.Configuration )
BLL 引用Model 、DAL
UI(web:前台html+后台cs) 引用Model 、BLL
然后web调 UI-》》BLL-》》DAL -》》再返回给UI Model (实体类)是三层都要用到的
13.Token
一、我们先解释一下他的含义:

1、Token的引入:Token是在客户端频繁向服务端请求数据,服务端频繁的去数据库查询用户名和密码并进行对比,判断用户名和密码正确与否,并作出相应提示,在这样的背景下,Token便应运而生。

2、Token的定义:Token是服务端生成的一串字符串,以作客户端进行请求的一个令牌,当第一次登录后,服务器生成一个Token便将此Token返回给客户端,以后客户端只需带上这个Token前来请求数据即可,无需再次带上用户名和密码。

3、使用Token的目的:Token的目的是为了减轻服务器的压力,减少频繁的查询数据库,使服务器更加健壮。

了解了Token的意义后,我们就更明确的知道为什么要用他了。

二、如何使用Token?

这是本文的重点,在这里我就介绍常用的两种方式。

1、用设备号/设备mac地址作为Token(推荐)

客户端:客户端在登录的时候获取设备的设备号/mac地址,并将其作为参数传递到服务端。

服务端:服务端接收到该参数后,便用一个变量来接收同时将其作为Token保存在数据库,并将该Token设置到session中,客户端每次请求的时候都要统一拦截,并将客户端传递的token和服务器端session中的token进行对比,如果相同则放行,不同则拒绝。

分析:此刻客户端和服务器端就统一了一个唯一的标识Token,而且保证了每一个设备拥有了一个唯一的会话。该方法的缺点是客户端需要带设备号/mac地址作为参数传递,而且服务器端还需要保存;优点是客户端不需重新登录,只要登录一次以后一直可以使用,至于超时的问题是有服务器这边来处理,如何处理?若服务器的Token超时后,服务器只需将客户端传递的Token向数据库中查询,同时并赋值给变量Token,如此,Token的超时又重新计时。

2、用session值作为Token

客户端:客户端只需携带用户名和密码登陆即可。

客户端:客户端接收到用户名和密码后并判断,如果正确了就将本地获取sessionID作为Token返回给客户端,客户端以后只需带上请求数据即可。

分析:这种方式使用的好处是方便,不用存储数据,但是缺点就是当session过期后,客户端必须重新登录才能进行访问数据。
14.WebMethod vs ScriptMethod
您在以下两个方案中使用ScriptMethod属性。
1.您正在使用jquery或任何其他ajax请求机制,但您希望请求是GET而不是POST。
2.您希望在javaScript中接收XML格式的响应。
如果您没有上述要求之一;您只需要使用ajax请求进行JSON响应,然后您就可以使用WebMethod。 这里还有一个令人困惑的元素,你什么时候使用ScriptService属性?如果您使用的是Microsoft Ajax Client脚本框架,则使用此属性,此属性告诉服务器在客户端上生成代理对象,以便您可以像普通对象一样调用函数。ScriptMethod可以是一个额外的注释。如果方法未使用ScriptMethodAttribute标记,则将使用HTTP POST命令调用该方法,并将响应序列化为JSON。
15.xmlhttprequest readyState 属性的五种状态
关于readystate五个状态总结如下:

readyState 状态 状态说明
(0)未初始化
此阶段确认XMLHttpRequest对象是否创建,并为调用open()方法进行未初始化作好准备。值为0表示对象已经存在,否则浏览器会报错--对象不存在。
(1)载入
此阶段对XMLHttpRequest对象进行初始化,即调用open()方法,根据参数(method,url,true)完成对象状态的设置。并调用send()方法开始向服务端发送请求。值为1表示正在向服务端发送请求。
(2)载入完成
此阶段接收服务器端的响应数据。但获得的还只是服务端响应的原始数据,并不能直接在客户端使用。值为2表示已经接收完全部响应数据。并为下一阶段对数据解析作好准备。
(3)交互
此阶段解析接收到的服务器端响应数据。即根据服务器端响应头部返回的MIME类型把数据转换成能通过responseBody、responseText或responseXML属性存取的格式,为在客户端调用作好准备。状态3表示正在解析数据。
(4)完成
此阶段确认全部数据都已经解析为客户端可用的格式,解析已经完成。值为4表示数据解析完毕,可以通过XMLHttpRequest对象的相应属性取得数据。
概而括之,整个XMLHttpRequest对象的生命周期应该包含如下阶段:
创建-初始化请求-发送请求-接收数据-解析数据-完成

100——客户必须继续发出请求

101——客户要求服务器根据请求转换HTTP协议版本

200——交易成功

201——提示知道新文件的URL

202——接受和处理、但处理未完成

203——返回信息不确定或不完整

204——请求收到,但返回信息为空

205——服务器完成了请求,用户代理必须复位当前已经浏览过的文件

206——服务器已经完成了部分用户的GET请求

300——请求的资源可在多处得到

301——删除请求数据

302——在其他地址发现了请求数据

303——建议客户访问其他URL或访问方式

304——客户端已经执行了GET,但文件未变化

305——请求的资源必须从服务器指定的地址得到

306——前一版本HTTP中使用的代码,现行版本中不再使用

307——申明请求的资源临时性删除

400——错误请求,如语法错误

401——请求授权失败

402——保留有效ChargeTo头响应

403——请求不允许

404——没有发现文件、查询或URl

405——用户在Request-Line字段定义的方法不允许

406——根据用户发送的Accept拖,请求资源不可访问

407——类似401,用户必须首先在代理服务器上得到授权

408——客户端没有在用户指定的时间内完成请求

409——对当前资源状态,请求不能完成

410——服务器上不再有此资源且无进一步的参考地址

411——服务器拒绝用户定义的Content-Length属性请求

412——一个或多个请求头字段在当前请求中错误

413——请求的资源大于服务器允许的大小

414——请求的资源URL长于服务器允许的长度

415——请求资源不支持请求项目格式

416——请求中包含Range请求头字段,在当前请求资源范围内没有range指示值,请求也不包含If-Range请求头字段

417——服务器不满足请求Expect头字段指定的期望值,如果是代理服务器,可能是下一级服务器不能满足请求

500——服务器产生内部错误

501——服务器不支持请求的函数

502——服务器暂时不可用,有时是为了防止发生系统过载

503——服务器过载或暂停维修

504——关口过载,服务器使用另一个关口或服务来响应用户,等待时间设定值较长

505——服务器不支持或拒绝支请求头中指定的HTTP版本
16.ascx
在这里插入图片描述
17. 和<%–注释–%>有什么区别
使用ASP.NET编辑页面时,有两种注释方式:一是使用 ,二是使用<%-- --%>,前一种方式是标准的HTML注释,在HTML文件中也可以使用,后一种是ASP.NET特有的注释,只有在ASPX文件中可以使用。那么这两种注释有什么区别呢?区别就是它们是否显示在页面最终生成的HTML文件中。现在做一个试验,做一个test.aspx文件,页面代码如下。

注释测试 <%-- aspx comment 不会包含在最终生成的html文件中--%> 浏览这个页面,并在浏览器中查看页面源码,就会看到,源码中只包含 形式的注释,而<%----%>已经删除了,可以想到,是在ASP.NET页面的Render相关阶段删除了,发到客户端的代码中已经不包含<%----%>

18.就算aspx有if eval里的字段也要在.cs里的数据源里添加 不然会报没字段的错误
在这里插入图片描述
在这里插入图片描述
异常:将指定的计数添加到该信号量中会导致其超过最大计数。
解决:重启iis
EF
b站教程