这是因为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