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

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

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

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

Или С#:

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

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

4b9b3361

Ответ 2

Стоит отметить, что хотя 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 может сделать это для вас).

Ответ 3

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