rezaeti Ответов: 1

Как добавить условный код для перенаправления на текущую страницу в ASP.NET


Всем привет.У меня есть Confirm-user. aspx в asp.net страница подтверждения пользователя находится в папке (Manage_pages).У меня есть боковая панель на главной странице. и используйте этот код для списка всех страниц, к которым пользователь может получить доступ:

<div id="sidebar">
                    <ul>
                        <li>
                            <h2>title</h2>
                            <ul>
                            <% foreach (DAL.Page page in pageList)
         {%>
         <% Response.Write("<li><a href="+page.PageAddress+">"+page.PageName+"</a></li>"); %>
        <% }%>


                            </ul>
                        </li>
                    </ul>
                </div>



проблема в том, что когда я нажимаю на ссылку Подтвердить - страница пользователя, я успешно перехожу на эту страницу

http://localhost:2112/Manage_pages/ConfirmUser.aspx

Но когда я снова нажимаю на ссылку, она не работает и переходит в :

http://localhost:2112/Manage_pages/Manage_pages/ConfirmUser.aspx

пожалуйста, помогите мне. спасибо.

Что я уже пробовал:

как добавить условный код для перенаправления на текущую страницу в asp.net

Kornfeld Eliyahu Peter

URL-адрес, который вы создаете здесь, относится к текущей странице...

rezaeti

привет, не могли бы вы сказать поподробнее?

1 Ответов

Рейтинг:
1

F-ES Sitecore

Response.Write("<li><a href="+page.PageAddress+">"+page.PageName+"</a></li>");


Если " страница.PageAddress "- это "Manage_pages/ConfirmUser. aspx", тогда это относительный url-адрес, то есть относительно текущей страницы, поэтому" Manage_Pages " - это уровень ниже текущей страницы. Если вы находитесь на домашней странице, то это "Manage_pages/ConfirmUser. aspx", как и следовало ожидать. Однако когда вы находитесь на ConfirmUser, то страница считается дочерней по отношению к этой папке, поэтому "Manage_pages/Manage_pages/ConfirmUser.aspx" - это то, что вы видите.

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

Response.Write("<li><a href=/"+page.PageAddress+">"+page.PageName+"</a></li>");


Я добавил " / "в начало url-адреса, и это превращает ваш url-адрес в" /Manage_pages/ConfirmUser.aspx", который ищет папку Manage_pages из корня веб-сайта независимо от того, где вы находитесь.

Хотя есть и лучшие способы, такие как использование Page.ResolveUrl или есть такие вещи, как

Виртуальность.Метод ToAbsolute (String) (System. Web)[^]

ваш код также будет иметь проблемы, если в вашем url-адресе есть пробелы. Я бы сделал всю эту работу в тот момент, когда генерируется список URL-адресов, поработал бы над ними, чтобы убедиться, что они абсолютны, а не писал бы этот код на странице aspx.