原文件结构:
<head runat="server">
<!--第一部分-->
 <script src="js/jquery-1.4.2.js" type="text/javascript"></script>
<script src="js/main.js" type="text/javascript"></script> //其中main.js需要对下面的var role变量进行操作
<!--第二部分-->
<script type="text/javascript">
    var role = "<%=role %>";
</script></head>
<body>
......
</body>叙述如下: 
因为第一部分引用的外部文件很多,所以必须在BasePage页中用 Page.Header.Controls.Add()这种方法来动态引用js和css文件。那么第二部分就不能出现在head区,否则出现The Controls collection cannot be modified because the control contains code blocks (i.e. <% … %>)的错误。如果我把第二部分的内容移到<body>区,能解决上述错误,但是因为js执行顺序的原因,main.js对第二部分的var role变量操作就无法生效!请问如何解决这个矛盾,谢谢!!

解决方案 »

  1.   

    你把<script src="js/main.js" type="text/javascript"></script>也移到body区,并在<script type="text/javascript">
      var role = "<%=role %>";
    </script>
    下面,即:
    <body>
    <script type="text/javascript">
      var role = "<%=role %>";
    </script>
    <script src="js/main.js" type="text/javascript"></script>
    </body>这样行吗?
      

  2.   

    Page.Header.Controls.Add()动态创建script标签  赋值新的script的 Text="var role = \"" + role + "\";"动态add main
      

  3.   

    将 Role值在pageload事件里 写入前台页面中 hidden控件,main.js文件中在$(function(){
       //获取 hidden的Role值
    });
      

  4.   


    string role = "abcde";
    HtmlGenericControl ele = default(HtmlGenericControl);
    //abc.js
    ele = new HtmlGenericControl("script");
    ele.Attributes.Add("type", "text/javascript");
    ele.Attributes.Add("src", "js/abc.js");
    Page.Header.Controls.Add(ele);
    //动态值
    ele = new HtmlGenericControl("script");
    ele.Attributes.Add("type", "text/javascript");
    ele.InnerHtml = "var role = \"" + role + "\";";
    Page.Header.Controls.Add(ele);
    //main.js
    ele = new HtmlGenericControl("script");
    ele.Attributes.Add("type", "text/javascript");
    ele.Attributes.Add("src", "js/main.js");
    Page.Header.Controls.Add(ele);
      

  5.   

    或者<script src="Scripts/jquery-1.4.1-vsdoc.js" type="text/javascript"></script>
        <script type="text/javascript">
            $(function () {
                var r = $("#divT").html();
                alert(r);
            });
        </script>
    ------------------
    <div id="divT" style="display: none">
                <%=Role %></div>
      

  6.   

    外部js里面是无法用<%#%>表达式的