Сведения о вопросе

Fedya

12:53, 8th August, 2020

Теги

c#   asp.net   vb.net   static   resolveurl    

ASP.Net: использование System.Web.UI.Control.ResolveUrl() в общей / статической функции

Просмотров: 560   Ответов: 3

Как лучше всего использовать ResolveUrl() в общей / статической функции в Asp.Net? Мое текущее решение для VB.Net-это:

Dim x As New System.Web.UI.Control
x.ResolveUrl("~/someUrl")

Или C#:

System.Web.UI.Control x = new System.Web.UI.Control();
x.ResolveUrl("~/someUrl");

Но я понимаю, что это не лучший способ назвать его.



  Сведения об ответе

appple

22:40, 22nd August, 2020

  Сведения об ответе

piter

01:35, 9th August, 2020

Стоит отметить, что хотя System.Web.VirtualPathUtility.ToAbsolute здесь очень полезен, он не является идеальной заменой для Control.ResolveUrl.

Есть по крайней мере одно существенное отличие: Control.ResolveUrl очень хорошо обрабатывает строки запроса, но они заставляют VirtualPathUtility выбрасывать HttpException. Это может быть абсолютно загадочным в первый раз, когда это происходит, особенно если вы привыкли к тому, как работает Control.ResolveUrl.

Если вы знаете точную структуру строки запроса, которую хотите использовать, это достаточно легко обойти, а именно::

public static string GetUrl(int id)
{
    string path = VirtualPathUtility.ToAbsolute("~/SomePage.aspx");
    return string.Format("{0}?id={1}", path, id);
}
...

но если строка запроса передается из неизвестного источника, то вам нужно будет как-то ее разобрать. (Прежде чем вы слишком углубитесь в это, обратите внимание, что System.Uri может быть в состоянии сделать это за вас).


  Сведения об ответе

PROGA

19:04, 12th August, 2020

Я обычно использую HttpContext.Current для получения страницы,а затем запускаю любые методы управления страницей/веб-сайтом.


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться