Подтвердить что ты не робот

В чем разница между ResolveUrl и ResolveClientUrl?

Я использую ResolveUrl для добавления CSS и Javascript в файлы ASP.NET.

Но обычно я вижу вариант ResolveClientUrl. В чем разница между ними?

Когда следует использовать ResolveClientUrl?

4b9b3361

Ответ 1

ResolveUrl создает URL-адрес относительно корня.

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

Вы также можете использовать то, что хотите, однако чаще всего используется ResolveUrl.

Ответ 2

Вот простой пример:

//Returns: ../HomePage.aspx
String ClientURL = ResolveClientUrl("~/HomePage.aspx");

//Returns: /HomePage.aspx
String RegURL = ResolveUrl("~/HomePage.aspx");

//Returns: C:\inetpub\wwwroot\MyProject\HomePage.aspx
String ServerMappedPath = Server.MapPath("~/HomePage.aspx");

//Returns: ~/HomePage.aspx
String appRelVirtPath = AppRelativeVirtualPath;

//Returns: http://localhost:4913/
String baseUrl = Request.Url.GetLeftPart(UriPartial.Authority) + Request.ApplicationPath;

//Returns: "http://localhost:4913/HomePage.aspx"
String absUri = Request.Url.AbsoluteUri;

Ответ 3

В соответствии с документацией MSDN:

ResolveClientUrl

Полностью квалифицированный URL для указанного ресурс, подходящий для использования на браузер.

Используйте метод ResolveClientUrl для вернуть строку URL, подходящую для использования клиентом для доступа к ресурсам на веб-сервер, такой как файлы изображений, ссылки на дополнительные страницы и т.д.

ResolveUrl

Преобразованный URL.

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

Например, рассмотрим следующее Сценарий:

Клиент запросил страницу ASP.NET, который содержит пользовательский элемент управления, который имеет связанное с ним изображение.

Страница ASP.NET расположена по адресу /Store/page 1.aspx.

Пользовательский элемент управления находится по адресу /Store/UserControls/UC 1.ascx.

Файл изображения находится по адресу /UserControls/Images/Image 1.jpg.

Если пользовательский элемент управления передает относительный путь к изображению (то есть, /Store/UserControls/Images/Image 1.jpg) к методу ResolveUrl, метод вернет значение /Images/Image 1.jpg.

Я думаю, это объясняет это довольно хорошо.

Ответ 4

Короче:

Page.ResolveUrl(~): creates the URL from the root of app.

и

Page.ResolveClientUrl(~): creates the URL relative to the current page.(e.g: ../../..)

но в моих тестах в asp.net Page.ResolveUrl лучше из-за стабильного вывода и не является относительным.