asp.net服务器数据源控件学习笔记

简介: 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq1010885678/article/details/37540315 1.
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq1010885678/article/details/37540315
1.数据绑定控件的DataSource属性只能接受三种接口类型的数据
(IListSource,IEnumerable,IDataSource)


2.要手动在已经绑定数据的数据绑定控件上添加自定义的数据:
this.DropDownList1.AppendDataBoundItems = true;
this.DropDownList1.Items.Add("请选择");
如果没有第一句代码,在生命周期中的Render方法生成控件树时,DropDownList添加数据的方式是覆盖的,会将之前的数据覆盖掉,设置为true之后,添加数据的方式变为追加方式,不会覆盖之前的数据(限制性Page_Load在执行Render)


3.Repeater其实是一个for循环,从对象数据源拿到实体对象列表之后,会对这个对象列表进行for循环,每一次循环都会执行xxxxTemplate标签里面的html代码


好处:可以自己定义需要循环的内容,不必像之前服务器自己生成的那么繁杂


4.在为服务器控件的属性设置值的时候, 如果出现 string + <%#Eval("id")%> ,则一定要修改为:
    <%# string + Eval("id")%>。
   否则,服务器控件的属性,会把 <%当字符串转义的。


5.Eval方法是单向绑定(负责显示),Bind方法是双向绑定 ~~(负责显示,也负责修改数据)!


6.Repeater的ItemCommand事件:当Repeater控件里面向服务器提交表单时触发,在前台可以标签中使用CommandArgument(里面放要传的值)和CommandName(要执行的操作类型,如:Delete,Modify)属性来设置,在后台的ItemRepeater事件中可以通过e.CommandArgument和e.CommandName接收到


7.Repeater大部分用来展示数据,要进行增删改查用 比较简单
ListView里面通过DataKeyNames设置列的主键


普通使用ListView:使用ObjectDataSource对象数据源控件配置数据源和方法,之后使用ListView数据绑定控件与ObjectDataSource控件绑定


使用异步ListView:需要一个ScriptManager和UpdatePanel的AJAX扩展控件,还是使用ObjectDataSource,ListView,使用方法同上(ScriptManager和ObjectDataSource在UpdatePanel外面,ListView在里面)


ListView找数据源控件要数据,拿到数据之后交给DataPager决定要显示哪些数据(DataPager负责生成页码条,并控制显示在ListView里面的数据行数)


ListView搭配DataPager控件实现的分页是一次性从数据库拿到所有的数据,然后再截取适当的部分显示出来,在数据很大的时候是非常没有效率的,应该在查询数据的时候只查询需要显示的那一部分的数据


使用ListView高效分页


8.母版页与子页面的关系:先执行子页面的PageLoad在执行母版页的PageLoad


9.页面生命周期中有用的方法(按顺序):
  LoadAllState:将表单隐藏域_VIEWSTATE里的数据设置在页面对象的ViewState属性中
  ProcessPostData:将表单里提交的控件数据设置给控件树中对应控件的属性中
  PageLoad:调用程序员在后台的PageLoad方法中编写的代码(此时已经能访问控件树中的属性了,通过这个在得到浏览器控件里面输入的数据)
  ProcessPostDataSecond:再次为控件树里面的控件设置浏览器提交过来的值(主要是为了新增加的控件)
  Rend:遍历控件树,生成html代码


10.Cache:
  与Appplication原理差不多,都可以由服务器的一个静态字典集合实现。
  与Session的区别:Session区分各种不同的浏览器,只有对应的浏览器可以访问,Cache则是所有的人都可以访问


12.整页缓存:会将动态页面生成的html代码存入服务器缓存区,当浏览器再次请求时,服务器不会执行页面的生命周期,而是直接从缓存区中拿到上次生成的html代码发回给浏览器
  当使用整页缓存时可以根据页面url的不同参数来设置不同的页面缓存版本。
  如:<%@OutputCache Duration="20" VaryByParam="id"%>
  Duration="20"  设置缓存的时间(以秒为单位)
  VaryByParam="id" 设置根据页面url的参数生成的缓存版本


13.数据源缓存:只是将数据源控件所查询到的数据放入缓存区,是一种局部缓存,当浏览器在此请求时,服务器还是会执行页面的生命周期,只是不在从数据库中查询所需要的数据,而是从缓存区中拿到该数据并交给相应的控件,然后生成html代码发回给浏览器
  设置方法:在前台页面的数据源控件代码中,EnableCache="true"(启用)CacheDuration="20"(20秒)


14.自定义的缓存:在后台代码中,Cache["chubbby"] = "chubby";


15.缓存可以设置
  绝对过期时间:10秒之后立即清空缓存
  滑动过期时间:10秒之内有新的缓存请求的话,10秒重新计时
  带文件依赖的缓存:只要依赖的文件没有被修改,缓冲就不会被清空


16.Session默认是保存在Framework内置的一个程序中(aspnet_wp.exe)缺点是容量小,易丢失
   可以手动修改配置文件将Session保存到外置的程序,如:aspnet_state.exe(微软提供) 也可以保存在数据库中(前提是要保存的Session如果是对象的话必须序列化,在类名上添加特性[Serializeable])
  在配置文件中<sessionState mode=""></sessionState>


17.全局配置类,可以在其中配置网站运行时出现的任何错误的处理信息(一般用来做错误日志)
在Application_Error方法中:
HttpApplication app = sender as HttpApplication;
Exception ex = app.Context.Server.GetLastError();
string logFile = app.Context.Server.MapPath("04Log.txt");
System.IO.AppendAllText(logFile,ex.Message);
或者一旦出现错误就跳转到自定义的错误页面
app.Context.Response.Redirect("05Err.aspx?err=" + app.Context.Server.UrlEncode(ex.Message));


也可以在全局配置文件类中为请求管道事件注册方法,如在浏览器发送请求之前判断所请求的图片是否为盗链的:
在Application_BeginRequest方法中编写代码
string strPath = app.Context.Request.UrlReferrer;
if(strPath.StartsWith("http://www.baidu.com"))
或者处理黑名单IP
app.Context.Request.UserHostAddress


18.根据错误的状态码跳转到响应的自定义的错误页面
在配置文件中添加
<CustomError mode="on" defaultRedirect="1.aspx">
  <error statusCode="404" redirect="2.aspx"/>页面无法找到时
  <error statusCode="500" redirect="3.aspx"/>服务器内部异常错误时
</CustomError>


19.HttpModule过滤:
在实现IHttpModule接口的类中可以手动为请求管道的事件注册方法


20.url重写原理:
  网站部署后被第一次访问,fw会读取配置文件里面的<Modules>节点,遍历其中的子节点,获取每个过滤器程序集的类创建并转成IHttpModule接口存入一个静态的过滤器集合中,在以后的浏览器每次访问网站时,都会遍历过滤器集合同一调用Init方法向请求管道中注册事件,RewritePath所做的事情就是修改了HttpContext里面包含的请求报文中的请求url
相关文章
|
5月前
|
开发框架 .NET C#
在 ASP.NET Core 中创建 gRPC 客户端和服务器
本文介绍了如何使用 gRPC 框架搭建一个简单的“Hello World”示例。首先创建了一个名为 GrpcDemo 的解决方案,其中包含一个 gRPC 服务端项目 GrpcServer 和一个客户端项目 GrpcClient。服务端通过定义 `greeter.proto` 文件中的服务和消息类型,实现了一个简单的问候服务 `GreeterService`。客户端则通过 gRPC 客户端库连接到服务端并调用其 `SayHello` 方法,展示了 gRPC 在 C# 中的基本使用方法。
96 5
在 ASP.NET Core 中创建 gRPC 客户端和服务器
|
7月前
|
开发框架 JavaScript 前端开发
|
8月前
|
开发框架 JavaScript 前端开发
震撼!破解 ASP.NET 服务器控件 Button 执行顺序之谜,颠覆你的开发认知!
【8月更文挑战第16天】在ASP.NET开发中,通过Button控件实现先执行JavaScript再触后台处理的需求十分常见。例如,在用户点击按钮前需前端验证或提示,确保操作无误后再传递数据至后台深度处理。此过程可通过设置Button的`OnClientClick`属性调用自定义JavaScript函数完成验证;若验证通过,则继续触发后台事件。此外,结合jQuery也能达到相同效果,利用`__doPostBack`手动触发服务器端事件。这种方式增强了应用的交互性和用户体验。
81 8
|
8月前
|
开发框架 JavaScript 前端开发
揭秘:如何让你的asp.net页面变身交互魔术师——先施展JavaScript咒语,再引发服务器端魔法!
【8月更文挑战第16天】在ASP.NET开发中,处理客户端与服务器交互时,常需先执行客户端验证再提交数据。传统上使用ASP.NET Button控件直接触发服务器事件,但难以插入客户端逻辑。本文对比此法与改进方案:利用HTML按钮及JavaScript手动控制表单提交。后者通过`onclick`事件调用JavaScript函数`SubmitForm()`来检查输入并决定是否提交,增强了灵活性和用户体验,同时确保了服务器端逻辑的执行。
91 5
|
8月前
|
存储 开发框架 .NET
ASP.NET Web Api 使用 EF 6,DateTime 字段如何取数据库服务器当前时间
ASP.NET Web Api 使用 EF 6,DateTime 字段如何取数据库服务器当前时间
100 0
|
8月前
|
开发框架 缓存 .NET
并发请求太多,服务器崩溃了?试试使用 ASP.NET Core Web API 操作筛选器对请求进行限流
并发请求太多,服务器崩溃了?试试使用 ASP.NET Core Web API 操作筛选器对请求进行限流
323 0
|
1天前
|
弹性计算 关系型数据库 Apache
阿里云实验基于ECS搭建云上博客
实验网址https://developer.aliyun.com/adc/scenario/fdecd528be6145dcbe747f0206e361f3?spm=a2c6h.13858375.devcloud-scene-list.4.d1a04090jMEG9j
42 25
|
6天前
|
安全 Linux
阿里云linux服务器使用脚本通过安全组屏蔽异常海外访问ip
公网网站可能会遭受黑客攻击导致访问异常,使用此脚本可以屏蔽掉异常IP 恢复访问。也可自行设置定时任务定期检测屏蔽。
91 28
|
7天前
|
存储 机器学习/深度学习 人工智能
阿里云第八代云服务器c8i与g8i深度解析:技术对比、场景适配与选购指南
阿里云服务器计算型c8i与通用型g8i实例属于阿里云的第八代云服务器实例规格,是除了计算型c7与c8y和通用型g7与g8y之外同样深受用户喜欢的云服务器实例规格。本文将详细解析计算型c8i与通用型g8i实例的技术特性、适用场景、性能优势,以及最新的活动价格情况,并为用户提供购买建议。
|
12天前
|
自然语言处理 大数据 云计算
「轻」启未来:阿里云轻量应用服务器用户交流会
扫描海报二维码报名,赢取百元代金券!

热门文章

最新文章