博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ASP.NET中DesignMode属性
阅读量:5892 次
发布时间:2019-06-19

本文共 763 字,大约阅读时间需要 2 分钟。

参考:

       

 

在设计模式下,控件生命周期的所有方法并不是都执行的,比如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)
     {
  ......
     } 
}

转载地址:http://pifsx.baihongyu.com/

你可能感兴趣的文章
一个IO的传奇一生(2)
查看>>
linux文件描述符
查看>>
C++ const 详解
查看>>
给Github上的项目添加开源协议
查看>>
imx53 start board 开箱照
查看>>
免费的编程中文书籍索引
查看>>
struts2引入标签时遇到的问题
查看>>
Hibernate例子-自己写的一个干净的给予注解的Hibernate例子
查看>>
WorkFlow入门Step.6—Building a Console Application -For-WF4.0
查看>>
sota系统服务进程的启动与停止(章节:4.2)
查看>>
精选9个值得学习的 HTML5 效果【附源码】
查看>>
查看Beyond Compare比较图片实际尺寸的方法
查看>>
Tomcat 安全配置与性能优化
查看>>
线性表顺序存储-练习题1
查看>>
jQuery中尺寸
查看>>
Python学习day1作业总结
查看>>
两种方法实现10进制和62进制互转
查看>>
无难度教你学会Yii2的资源管理(Asset Manager) - 发布资源
查看>>
Android MVP 模式 项目初体验(一)
查看>>
Android四大组件:BroadcastReceiver史上最全面解析
查看>>