zoukankan      html  css  js  c++  java
  • 控件包含代码块,因此无法修改控件集合

    最近遇到一个奇怪的问题,一段在 head 中的代码,有些大多数人的机器上运行没有问题,我在服务器上执行也没有问题,而在一部分人执行起来就直接报错:

    控件包含代码块(即 <% ... %>),因此无法修改控件集合。

    出问题的两个系统一个是 2003 企业版,一个是 2008 企业版,都是安装在个人电脑上,但服务器使用的也是 2008 企业版,却没有出问题,SP补丁版本,.Net Framework版本也都相同,确实很奇怪,莫非是 Z 版支持较好?

     

    出问题的代码:

     

    <head runat=”server”>
        
    <link href="<%= ResolveUrl("~/Style/main.css") %>" type="text/css" rel="stylesheet" />
        
    <script type="text/javascript" src="<%= ResolveUrl("~/JavaScript/jquery.js") %>"></script>
    </head>

     

    查找了一些资料,认为应该是一个 .Net 框架限制的问题,因为 aspx 页面的 head 必须加 runat=”server” 属性,那么其下的所有标签也应该被处理成了控件树的一部分,下层数据的动态改变导致上层容器就变得无法修改集合,当然,这也是基于一种猜测,但是我找到的最有可能的一种猜测。

     

    不管 .Net 内部搞什么灰机,我要解决当下的问题,总的说来有两种解决之道:

     

    1、网络上盛传的方法,将 head 中所有涉及 <% ... %> 的元素都移到 body 中去,但显然这是一种不得已而为之的办法,引用式样和脚本本身就应该处于 head 中才对,不推崇。

     

    2、我的方法:增加一个 HeadQuote.ascx 用户控件,然后将这个控件引用到 head 中

     

    <head runat="server">
       
    <uc1:HeadQuote ID="HeadQuote1" runat="server" />
    </head>

     

    虽然产生的过程不够漂亮,但至少最终的结果(Html 页面代码)却是令人满意的,希望这篇文章也能对你有所帮助。

  • 相关阅读:
    Java实现 蓝桥杯 算法提高 队列操作
    DUILIB创建不规则窗体,自定义控件(很不错的几十篇文章)
    修改窗口属性(全部都是SetWindowLong设置)
    搭建DirectUi开发平台
    _CrtSetBreakAlloc简单内存泄漏检测方法,解决Detected memory leaks!问题
    VLD(Visual LeakDetector)内存泄露库的使用
    设计模式之组合模式
    Moq的使用心得
    Moq 测试 属性,常用方法
    C#中Linq查询基本操作
  • 原文地址:https://www.cnblogs.com/islee/p/1770463.html
Copyright © 2011-2022 走看看