這是因爲HtmlTitle控制不提供RenderAttributes實施。在這種情況下,你不能(輕易地)控制子控件,但還有另一種選擇。 控制適配器的功能不僅限於WebControls - HtmlControls的概念也是extends。
掉落在* .browser文件下App_Browsers文件以下目錄網站的:
<browsers>
<browser refID="Default">
<controlAdapters>
<adapter
controlType="System.Web.UI.HtmlControls.HtmlTitle"
adapterType="HtmlTitleAdapter"
/>
</controlAdapters>
</browser>
</browsers>
下面是對應的適配器的原型:
using System.Web;
using System.Web.UI;
using System.Web.UI.HtmlControls;
public class HtmlTitleAdapter : System.Web.UI.Adapters.ControlAdapter
{
protected override void Render(System.Web.UI.HtmlTextWriter writer)
{
HtmlTitle title = Control as HtmlTitle;
writer.WriteBeginTag("title");
title.Attributes.Render(writer);
writer.Write(">");
if (title.Text != null)
writer.Write(title.Text);
writer.WriteEndTag("title");
}
}
注意,內部渲染HtmlTitle的實現有所不同:
protected internal override void Render(HtmlTextWriter writer)
{
writer.RenderBeginTag(HtmlTextWriterTag.Title);
if (this.HasControls() || base.HasRenderDelegate())
{
this.RenderChildren(writer);
}
else if (this._text != null)
{
writer.Write(this._text);
}
writer.RenderEndTag();
}
我不知道標題何時會有子元素,所以我不認爲這是一個問題。
希望這會有所幫助。
順便說一句,使用jQuery在客戶端添加此屬性會容易得多。
<script type="text/javascript">
$(document).ready(function() {
$("title").attr("lang", "it");
});
</script>
您是否使用母版頁?主頁面/內容頁面是否覆蓋了這個? – Oded 2010-10-22 18:50:26
@提供,是的,我正在使用masterpages(我的問題的第一句話是這麼說的)。內容頁面通過Page.Title =「...」設置標題。我在我的問題(我添加了自己的標題標籤)中顯示的代碼直接在主頁的代碼隱藏中完成。 – 2010-10-22 19:32:42