65.9K
CodeProject 正在变化。 阅读更多。
Home

动态地为 ASP 代码添加 base 标签

starIconstarIconstarIcon
emptyStarIcon
starIcon
emptyStarIcon

3.48/5 (10投票s)

2007年7月21日

CPOL
viewsIcon

39234

如何动态向 ASP 代码添加 base 标签。

引言

在使用 HTML 代码中的相对路径时,设置 base 标签很有帮助。但这个 base 可能对团队中的每个开发人员,或者在测试、QA 或生产环境中都不同。此外,当使您的 URL 针对搜索引擎进行优化时,您的 URL 将映射到不存在的路径。解决此问题的最佳方法是动态地将 <base href="..."/> 标签添加到页面头部。

使用代码

解决方案非常简单。首先,创建一个名为 BaseTag 的新类,该类包含以下代码

public class BaseTag : HtmlControl
{
    public BaseTag(HttpRequest request): base("base")
    {
        base.Attributes.Add("href", 
            request.Url.Scheme + "://" + 
            request.Url.Authority + 
            request.ApplicationPath + "/");
    }
}

关键部分是 Url.Scheme,它返回 URL 方案,例如 HTTP 和 HTTPS。Url.Authority 返回主机和端口地址(如果提供了)。接下来是应用程序路径,通常是 Web 应用程序目录位置的唯一标识。将它们全部与正确的字符串构造组合在一起,就可以为 base 标签获得一个格式良好的 href,例如

http://someurl:8080/web/

接下来,在你的 *.aspx.cs 文件的 Page_Load 方法中包含以下行

protected void Page_Load(object sender, EventArgs e)
{
    this.Header.Controls.AddAt(0, new BaseTag(Request)); 
}

最终结果是 <base href="http://someurl:8080/web/"/> 标签。

希望这对您有所帮助。

© . All rights reserved.