在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">
<%=strAlert %>
这样运行一切相安无事
好改一下代码:
修改标签里的代码:
<%=strAlert %>
<%=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
好再修改一下代码:
<%=strAlert %>
一样的错误再次出现。得出的结果:在动态为添加代码时,标签中非标签不能包含<%...%>这样的代码块。
二:
好现在我们重新新建一个文件
后台代码:
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_TestStylePage : System.Web.UI.Page
{
protected string strAlert = "Hello, Happy New Year!";
protected void Page_Load(object sender, EventArgs e)
{
}
}这次没有在head中动态添加东西
前台:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="TestStylePage.aspx.cs" Inherits="CommonQuery_TestStylePage" %>
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
http://www.w3.org/1999/xhtml" >
<%=strAlert %>
<%=strAlert %>
以上代码运行没有问题
但 ......
再添加一东西后... 如图,添加了主题,主题里包含了一些Css样式文件
再运行测试,结果又是出现以上的错误。。郁闷啊。。
有知有何好的解决方法呢?
综上所试,本人觉得开发ASP.NET或网面时,最好的方法就是将一些javascript代码控制页面的一些东西写在页面下端即