2010-01-07 3 views
2

Я хотел бы создать статический URL-адрес на основе нескольких параметров. Страница, обслуживающая файл для загрузки, называется CertificateDownload.aspx, я создаю ссылку для загрузки в Report.aspx. Эти 2 файла находятся в одной физической папке. Мне не нравится метод replace, но я не мог думать о другом способ сделать это. Как я могу улучшить свой код или что это лучший способ сделать это.Как создать статический url-файл в asp.net

Мне нужен абсолютный URL-адрес, который будет отображаться как текст в веб-браузере.

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 

ответ

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(); 
+0

Прохладный, спасибо. Я попробую. – Ybbest

+0

Спасибо, он работает и намного чище, чем мой код. – Ybbest

0

Что случилось с использованием относительного URL?

downLoadUrl = "CertificateDownload.aspx?CertificateID=" + CertificateName 

Гораздо проще.

+0

мне нужен абсолютный адрес, который будет отображаться в виде текста в веб-браузере, это не то, что мне нужно – Ybbest

0
Request.MapPath(string.format("CertificateDownload.aspx?CertificateID={0}", CertificateName)) 
+0

MapPath возвращает физический путь для заданного относительного URL. Он не возвращает URL-адрес. Это даст совсем другие результаты, чем вызов Url.ToString(). Заменить() в оригинале. –

+0

Зачем вам нужен абсолютный URL-адрес? Вы сказали, что хотите показать ссылки в Report.aspx. Поэтому вам не нужны абсолютные URL-адреса здесь, потому что, когда вы используете гиперссылку, сопоставленную с Request.MapPath, вы увидите абсолютный URL-адрес, поскольку он будет отображаться в браузере. – citronas

+0

. Это требование, мне нужно, чтобы абсолютный URL-адрес отображался как текст в веб-браузере. – Ybbest