2012-04-24 5 views
0

У меня есть следующий код, который должен перейти на определенную страницу компании со страницы запроса. В папке веб-сайта компания находится под папкой «Компании», а страница запроса находится в папке «Запросы».Ссылка на другую страницу в asp.net

Dim strUrl As String = "/Companies/Details.aspx?Company_ID=" & .Company_id 
litlCompany.Text = "<a href=" & strUrl & ">" & .Company.Name & "</a>" 

адреса URL должен быть построен так,

http://localhost/Companies/Details.aspx?Company_ID=222

Но речь идет, как,

http://localhost/Requests/Companies/Details.aspx?Company_ID=222

ли кто-нибудь знает почему?

+0

Что именно находится в strUrl? –

+0

Если вы используете ~ перед вашими URL-адресами, он перейдет в корневую папку, после чего вы сможете получить доступ к папкам внизу. Это очень удобно в мастер-файлах. Поэтому для вашего примера это будет выглядеть как «Dim strUrl As String =» ~/Companies/Details.aspx? Company_ID = "& .Company_id' – ThePower

+0

http: //localhost/Requests/~/Companies/Details.aspx? Company_ID = 254 , Это происходит сейчас. – Joshua

ответ

2

Вы также можете попробовать

Page.ResolveClientUrl("~/Companies/Details.aspx?Company_ID=" + Company_id) 
5

Я предполагаю, что вы в настоящее время находитесь на http://localhost/Requests/something.aspx? Если это так, это потому, что вы забыли спецификацию корня тильды:

~/Companies/Details.aspx 

Какой должна быть ваша проблема.

+0

Будет ли это работать так, как он это делает? Разве тильда не будет написана на href в его литеральной форме? –

+0

Возможно. Если он хочет убедиться, что URL, написанный для тега ссылки, верен, он будет лучше использовать сервер, просто создавая 'strUrl' комбинацию' Request.Url.Host' + 'strUrl' – Tejs

+0

@Tejs не работает – Joshua

0

Am при условии, что эта связь строится на странице request.aspx.

Я думаю, что href отображается в текущем httpcontext. Вы пытались создать строку, как:

Dim strUrl As String = "~/Компании/Details.aspx company_id =" & .Company_id

Я думаю, что это будет работать, если папка Компании находится в корневом каталоге. Тильда должна убедиться, что она выглядит от корня вниз.

+0

Да. Ссылка построена на странице request.aspx. Я попробовал страницу PageResolveClientUrl («~/Companies/Details.aspx? Company_ID =» + Company_id). Теперь работает – Joshua

1

По имени вашего контроля, похоже, что вы используете Literal.

Попробуйте изменить это к HyperLink, то вам не нужно будет поставить HTML (<a href=...) в тексте собственности, вы будете иметь возможность использовать hypCompany.NavigateUrl = strUrl и ASP.Net сгенерирует его для вас. Это самый простой способ сделать это так или иначе.

Кроме того, добавьте в тильдой, чтобы перейти к корню :-)

Э.Г.

Dim strUrl As String = "~/Companies/Details.aspx?Company_ID=" & .Company_id 
hypCompany.NavigateUrl = strUrl 
Смежные вопросы