首页  ·  知识 ·  
Label
      编辑:  图片来源:网络

在ASP.MET2.0中的aspx页面文件中的head标签中添加一些东西可能造成一系列严重的问题,最近我们项目就是这个样子,幸好经过以下的测试大体知道一些原因所在,避免造成项目危险。
如:
一:
后台代码:

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class CommonQuery_PageRegStyle : System.Web.UI.Page
{
    protected string strAlert = "Hello, Happy New Year!";
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    protected override void OnPreRender(EventArgs e)
    {
       
        string cssFrageMent = "";
        LiteralControl include = new LiteralControl(cssFrageMent);       
        this.Page.Header.Controls.Add(include);
        base.OnPreRender(e);
    }
}

前台代码:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="PageRegStyle.aspx.cs" Inherits="CommonQuery_PageRegStyle" %>

http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
http://www.w3.org/1999/xhtml">

    <BR>        <%=strAlert %><BR>   
 


   
       


           
           

                <%=strAlert%>
           

       

   
   


这样运行一切相安无事
好改一下代码:
修改标签里的代码:

    <BR>        <%=strAlert %><BR>   
  <%=strAlert%>
运行结果出错了:
 
“/ControlTest”应用程序中的服务器错误。
--------------------------------------------------------------------------------

控件包含代码块(即 <% ... %>),因此无法修改控件集合。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.Web.HttpException: 控件包含代码块(即 <% ... %>),因此无法修改控件集合。

源错误:

执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。 

堆栈跟踪:

[HttpException (0x80004005): 控件包含代码块(即 <% ... %>),因此无法修改控件集合。]
            System.Web.UI.ControlCollection.Add(Control child) +233
            System.Web.UI.PageTheme.SetStyleSheet() +365
            System.Web.UI.Page.OnInit(EventArgs e) +32
            System.Web.UI.Control.InitRecursive(Control namingContainer) +345
            System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1795
           
 
好再修改一下代码:

    <BR>        <%=strAlert %><BR>   
 

一样的错误再次出现。得出的结果:在动态为添加代码时,标签中非标签不能包含<%...%>这样的代码块。<BR>二:<BR>好现在我们重新新建一个文件<BR>后台代码:<BR>using System;<BR>using System.Data;<BR>using System.Configuration;<BR>using System.Collections;<BR>using System.Web;<BR>using System.Web.Security;<BR>using System.Web.UI;<BR>using System.Web.UI.WebControls;<BR>using System.Web.UI.WebControls.WebParts;<BR>using System.Web.UI.HtmlControls;</P> <P>public partial class CommonQuery_TestStylePage : System.Web.UI.Page<BR>{<BR>    protected string strAlert = "Hello, Happy New Year!";<BR>    protected void Page_Load(object sender, EventArgs e)<BR>    {</P> <P>    }<BR>}这次没有在head中动态添加东西<BR>前台:<BR><%@ Page Language="C#" AutoEventWireup="true" CodeFile="TestStylePage.aspx.cs" Inherits="CommonQuery_TestStylePage" %></P> <P><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "<A href="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd</A>"></P> <P><html xmlns="<A href="http://www.w3.org/1999/xhtml">http://www.w3.org/1999/xhtml</A>" ><BR><head runat="server"><BR>    <title><%=strAlert %>
    <%=strAlert %>


   


   

   
   

   



以上代码运行没有问题
但 ......
再添加一东西后... 如图,添加了主题,主题里包含了一些Css样式文件

再运行测试,结果又是出现以上的错误。。郁闷啊。。

有知有何好的解决方法呢?

综上所试,本人觉得开发ASP.NET或网面时,最好的方法就是将一些javascript代码控制页面的一些东西写在页面下端即之上。

一些样式相关的控制外观的东西最好就写在中以避免出现一些不可预见的问题,当然这样做也是最符合各自职能执行的顺序

 

本文作者:Sam Lin 来源:http://www.cnblogs.com/samlin/archive/2008/01/04/1
CIO之家 www.ciozj.com 微信公众号:imciow
   
免责声明:本站转载此文章旨在分享信息,不代表对其内容的完全认同。文章来源已尽可能注明,若涉及版权问题,请及时与我们联系,我们将积极配合处理。同时,我们无法对文章内容的真实性、准确性及完整性进行完全保证,对于因文章内容而产生的任何后果,本账号不承担法律责任。转载仅出于传播目的,读者应自行对内容进行核实与判断。请谨慎参考文章信息,一切责任由读者自行承担。
延伸阅读
也许感兴趣的
我们推荐的
主题最新
看看其它的
收藏至微信