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






3.48/5 (10投票s)
如何动态向 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/"/> 标签。
希望这对您有所帮助。

