Управление. ResolveUrl по сравнению с управлением. ResolveClientUrl по сравнению с VirtualPathUtility. ToAbsolute

<b>request.META</b><br>
{% for k_meta, v_meta in request.META.items %}
  <code>{{ k_meta }}</code> : {{ v_meta }} <br>
{% endfor %}
24
задан Aaron Hoffman 29 October 2009 в 19:19
поделиться

4 ответа

Разница между ResolveUrl и ResolveClientUrl заключается в том, что ResolveClientUrl возвращает путь относительно текущей страницы, а ResolveUrl возвращает путь относительно корня сайта:

http://www.andornot.com/ blog / post / ResolveUrl-vs-ResolveClientUrl.aspx

Я бы рекомендовал использовать абсолютные пути.

Редактировать : Рик Страл опубликовал хорошую статью об этом

Edit2 : Удален бит о кешировании. Не добавляет к ответу и не обязательно является точным.

http://west-wind.com/weblog/posts/132081.aspx

24
ответ дан Pent Ploompuu 28 November 2019 в 23:55
поделиться

Вот еще одна статья, которая объясняет разницу между различными способами разрешения путей в ASP.NET -

Различные подходы для разрешения URL-адресов в ASP.NET

5
ответ дан Rohit Agarwal 28 November 2019 в 23:55
поделиться

Еще одно отличие, которое я заметил:

Код:

string value = "~/Docs/Hello & World.aspx"; Response.Write(HyperLink1.ResolveClientUrl(value) + "<br/>"); Response.Write(HyperLink1.ResolveUrl(value) + "<br/>");

Результат:

Документы / Hello% 20 и% 20World.aspx

/ Документы / Hello & amp; World.aspx

1
ответ дан ravi 28 November 2019 в 23:55
поделиться

Обратите внимание, что VirtualPathUtility.ToAbsolute(virtualPath) вызовет исключение, если в путь включена строка запроса.

Сообщение HttpException будет выглядеть примерно так: "'~/YourVirtualPath/YourPage.aspx?YourQueryStringArg=FooBar' не является действительным виртуальным путем."

Смотрите Rick Strahl's Web Log:ResolveUrl() without Page и MSDN: VirtualPathUtility.ToAbsolute Method (String)

4
ответ дан 28 November 2019 в 23:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: