Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 如何将属性添加到标题标记_Asp.net_Webforms - Fatal编程技术网

Asp.net 如何将属性添加到标题标记

Asp.net 如何将属性添加到标题标记,asp.net,webforms,Asp.net,Webforms,我正在使用webforms ASP.NET和母版页。我想在标记中添加一个LANG属性。ASP.NET自动生成标题标记。我已经尝试添加我自己的带有ID和runat=“server”的标记,如下所示: <title id="titleBlock" runat="server"></title> 然而,ASP.NET完全删除了我的标记,并在没有my LANG属性的情况下加入了自己的标记。有没有办法做到这一点?非常感谢。之所以会出现这种情况,是因为HtmlTitle控件没有提供

我正在使用webforms ASP.NET和母版页。我想在
标记中添加一个LANG属性。ASP.NET自动生成标题标记。我已经尝试添加我自己的带有ID和runat=“server”的标记,如下所示:

<title id="titleBlock" runat="server"></title>

然而,ASP.NET完全删除了我的
标记,并在没有my LANG属性的情况下加入了自己的标记。有没有办法做到这一点?非常感谢。

之所以会出现这种情况,是因为HtmlTitle控件没有提供RenderAttributes实现。在这种情况下,您不能(轻松地)对控件进行子类化,但还有另一个选项。控制适配器的功能不仅限于网络控制,这个概念也适用于HTMLControl

将以下内容放入*.browser文件中,放在站点的App_Browsers目录下:

<browsers>
  <browser refID="Default">
    <controlAdapters>
      <adapter 
        controlType="System.Web.UI.HtmlControls.HtmlTitle"
        adapterType="HtmlTitleAdapter" 
      />
    </controlAdapters>
  </browser>
</browsers>
请注意,HtmlTile的内部渲染实现有些不同:

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>

$(文档).ready(函数(){
$(“title”).attr(“lang”,“it”);
});

您正在使用母版页吗?母版页/内容页是否覆盖了此内容?@Oded,是的,我正在使用母版页(我问题的第一句是这样说的)。内容页正在通过page.Title=“…”设置标题。我在问题中显示的代码(我在其中添加了自己的标题标签)直接在母版页codebehind中完成。它很有效——非常好的解决方案,谢谢。我知道使用jQuery很容易做到这一点,但我这么做的主要原因是为了搜索引擎,以便它们能够识别页面上几个元素(title标签和几个div)中使用的语言。搜索引擎不会运行JS,因此需要直接从服务器输出LANG属性。又是Thx。
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();
}
 <script type="text/javascript">
    $(document).ready(function() {
        $("title").attr("lang", "it");
    });
</script>