ASP.NET中DesignMode属性

简介: 参考:http://blog.sina.com.cn/s/blog_4c9da9b50100r4u7.html         http://book.51cto.com/art/200902/108836.htm   在设计模式下,控件生命周期的所有方法并不是都执行的,比如CreateChildControls,OnPreRender,Load等方法在设计模式下就不会执行。

参考:http://blog.sina.com.cn/s/blog_4c9da9b50100r4u7.html

        http://book.51cto.com/art/200902/108836.htm

 

在设计模式下,控件生命周期的所有方法并不是都执行的,比如CreateChildControls,OnPreRender,Load等方法在设计模式下就不会执行。而Init,Construct(构造方法),Render,RenderContents,还有Dispose等方法在设计模式下就会运行。这样设计的原则是合理的,因为在OnPreRender这一类事件中我们主要引入一些资源文件(JavaScript/Css/Pictures),在IDE设计器状态下这些文件路径是取不到的,它要根据当前运行的服务器虚拟路径来找到相应的文件名;还有,在Load,比如Page控件的PageLoad事件中,开发人员会将任意可能的代码放在这里执行,比如引用了服务端的上下文环境等,这时就会报"取不到信息"的异常错误。

由于在OnInit中调用的自定义函数里,访问了与服务器相关的变量,如Request,Response,Session,Server等,因为在设计模式时,这些变量是不会存在的,因此进行调用就会引发异常,从而导致这个错误的发生。
解决方案:
一个是检查HttpContext.Current是否为空;第二个就是不重写这样的页面流程函数,而改在事件中检查
采用第一种

protected    override   void   OnInit (EventArgs e)       
{
      if (System.Web.HttpContext.Current != null)
        {
                ......
                base . OnInit (e);           
        } 
}

另外有一种方法为

protected    override   void   OnInit (EventArgs e)       
{
     base.OnInit(e);
     if (!this.DesignMode)
     {  ......
     } 
}
目录
相关文章
|
API
.net core工具组件系列之Autofac—— 第二篇:Autofac的3种依赖注入方式(构造函数注入、属性注入和方法注入),以及在过滤器里面实现依赖注入
本篇文章接前一篇,建议可以先看前篇文章,再看本文,会有更好的效果。前一篇跳转链接:https://www.cnblogs.com/weskynet/p/15046999.html
425 0
.net core工具组件系列之Autofac—— 第二篇:Autofac的3种依赖注入方式(构造函数注入、属性注入和方法注入),以及在过滤器里面实现依赖注入
|
XML JSON 数据格式
.NET中XML序列化和反序列化常用类和用来控制XML序列化的属性总结(XmlSerializer,XmlTypeAttribute,XmlElementAttribute,XmlAttributeAttribute,XmlArrayAttribute...)
.NET中XML序列化和反序列化常用类和用来控制XML序列化的属性总结(XmlSerializer,XmlTypeAttribute,XmlElementAttribute,XmlAttributeAttribute,XmlArrayAttribute...)
246 0
|
存储 开发框架 自然语言处理
【.Net底层剖析】3.用IL来理解属性
【.Net底层剖析】3.用IL来理解属性
136 0
【.Net底层剖析】3.用IL来理解属性
|
JSON 物联网 数据格式
阿里云物联网.NET Core客户端 CZGL.AliloTClient:5.设置设备属性
阿里云物联网.NET Core客户端 CZGL.AliloTClient:5.设置设备属性
328 0
|
存储 传感器 JSON
阿里云物联网.NET Core客户端|CZGL.AliloTClient:4.设备上报属性
阿里云物联网.NET Core客户端|CZGL.AliloTClient:4.设备上报属性
341 0
|
存储 JSON 物联网
.NET Core 跨平台物联关网开发:上报属性(三)
.NET Core 跨平台物联关网开发:上报属性(三)
187 0
.NET Core 跨平台物联关网开发:上报属性(三)
|
JSON 物联网 网络性能优化
NET Core 跨平台物联网开发 SDK属性、方法、委托、类(四)
NET Core 跨平台物联网开发 SDK属性、方法、委托、类(四)
247 0
|
JSON 前端开发 数据格式
.net MVC 使用 JSON JavaScriptSerializer 进行序列化或反序列化时出错,字符串的长度超过了为 maxJsonLength 属性设置的值
在.net mvc的controller中,方法返回JsonResult,一般我们这么写: [HttpPost] public JsonResult QueryFeature(string url, string whereClause) { string str=""; return Json(str); }   此时如果str过长,就会报“使用 JSON JavaScriptSerializer 进行序列化或反序列化时出错,字符串的长度超过了为 maxJsonLength 属性设置的值”。
2831 0
|
JSON 开发框架 前端开发
ASP.NET MVC中JSON强制小写属性名称
首先需要引用Newtonsoft.Json using Newtonsoft.Json; using Newtonsoft.Json.Serialization; 然后转换对象 Model.JsonResult jsonResult = new Model.
894 0
|
JSON 物联网 数据格式
阿里云物联网 .NET Core 客户端 | CZGL.AliIoTClient:5. 设置设备属性
在上一章,格力空调温度 gree_temperature 设置了 读写 权限,因为空调的输出温度是可以被设置的。 CPU 温度是根据实际情况进行采集,而 空调温度 是遥控器设置的,服务器可以或者这个温度数据,同时也可以设置这个数据。
1292 0