动态地为 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/"/>
标签。
希望这对您有所帮助。