Я использую ResolveUrl для добавления CSS и Javascript в файлы ASP.NET.
Но обычно я вижу вариант ResolveClientUrl. В чем разница между ними?
Когда следует использовать ResolveClientUrl?
Я использую ResolveUrl для добавления CSS и Javascript в файлы ASP.NET.
Но обычно я вижу вариант ResolveClientUrl. В чем разница между ними?
Когда следует использовать ResolveClientUrl?
ResolveUrl создает URL-адрес относительно корня.
ResolveClientUrl создает URL-адрес относительно текущей страницы.
Вы также можете использовать то, что хотите, однако чаще всего используется ResolveUrl.
Вот простой пример:
//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;
В соответствии с документацией MSDN:
Полностью квалифицированный URL для указанного ресурс, подходящий для использования на браузер.
Используйте метод ResolveClientUrl для вернуть строку URL, подходящую для использования клиентом для доступа к ресурсам на веб-сервер, такой как файлы изображений, ссылки на дополнительные страницы и т.д.
Преобразованный 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.
Я думаю, это объясняет это довольно хорошо.
Короче:
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 лучше из-за стабильного вывода и не является относительным.