我想基于一些参数生成静态URL。 提供下载文件的页面名为CertificateDownload.aspx,我在Report.aspx中生成下载链接。这两个文件位于同一物理文件夹中。我不喜欢替换方法,但我想不出另一种方式这样做。 如何改进我的代码或更好的方法。
我需要绝对网址在网络浏览器中显示为文字。
Dim downLoadUrl As String = HttpContext.Current.Request.Url.ToString.Replace("Report.aspx", "CertificateDownload.aspx") + "?CertificateID=" + CertificateName
HyperLinkDownloadLink.Visible = True
HyperLinkDownloadLink.Text = downLoadUrl
HyperLinkDownloadLink.NavigateUrl = downLoadUrl
HyperLinkDownloadLink.Visible = True
HyperLinkDownloadLink.Text = downLoadUrl
HyperLinkDownloadLink.NavigateUrl = downLoadUrl
答案 0 :(得分:1)
你可以用UriBuilder干净利落地完成。有些人可能会说它太过分了,但它使代码的意图非常清晰,编程和维护更容易,并且更不容易出错。
var uriBuilder = new UriBuilder(HttpContext.Current.Request.Url);
uriBuilder.Path = Path.GetDirectoryName(uriBuilder.Path) + "/CertificateDownload.aspx";
uriBuilder.Query = "CertificateID=" + CertificateName;
var downloadUrl = uriBuilder.ToString();
答案 1 :(得分:0)
使用相对网址有什么问题?
downLoadUrl = "CertificateDownload.aspx?CertificateID=" + CertificateName
更简单。
答案 2 :(得分:0)
Request.MapPath(string.format("CertificateDownload.aspx?CertificateID={0}", CertificateName))