2007年8月23日 星期四

Using themed css files requires a header control on the page. (e.g. )

在使用 asp.net 2.0 時,在 web.config 中,使用了theme
<page theme="Blue" ....>

而且此主題中,也使用了 css
一般的網頁正常,但一些網頁就不行了。

如 showImage.aspx 的網頁,使用 Response.OutputStream 來輸出圖片
程式片斷如下
Stream objOutputStream = Response.OutputStream;
if ((strContentType != null) && (strContentType.Trim().Length !=0))
{
Response.ContentType = strContentType;
}
Response.AddHeader("Content-Disposition", "inline;filename=" + strFilename);
objOutputStream.Write(bytes, 0, bytes.Length);

這樣的程式,在VS2003 是正常的。但在 VS2005開發過後,會出現如下的錯誤。

Using themed css files requires a header control on the page. (e.g. <head runat="server" />)

原來,為了讓 themed css 能發揮作用,網頁的 header 必須 runAt="server" 這樣asp.net 才能動態的塞入css 的link
但像純顯示圖片的網頁,就不適用了。

解法方法如下:

1 顯示圖片的網頁,改用 httpHandler ==>大工程
2 顯示圖片的網頁,改用 ashx ==> 也是大工程
3 將ShowImage.aspx 的主題設為空白!!! <%@Page Theme=""> 就可以了。

前兩個方法其實還好,但是網頁名稱由 ShowImage.aspx 改成 ShowImage.hahah 或 showImage.ashx ,都要使用 find and replace 大法。

第三個方法就很吊詭了,Theme一定要設成空白才行,
設成不存在的theme 會出錯Theme 'hahaha' cannot be found in the application or global theme directories.。 EnableTheming="false" 是沒有用的

真是怪

1 則留言:

匿名 提到...

use this:

&lt head id="Head1" runat="server" visible="false" /&rt

Share with Facebook