Page.GetRoutUrl в статическом методе - PullRequest
3 голосов
/ 03 февраля 2010

Некоторые сведения о том, что я делаю

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

public partial class ProductDetails : Page
{
    public static string GetUrl(Guid productId)
    {
        return "fully qualified url";
    }
}

на других моих страницах / элементах управления, которым требуется доступ к этой странице, я просто установлю ссылку как

hl.NavigateUrl = ProductDetails.GetUrl(id);

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

Кто-нибудь знает, возможно ли повторить то, что я делаю с GetRouteUrl?

thx

Ответы [ 2 ]

3 голосов
/ 03 февраля 2010

Вы можете сделать что-то вроде:

var url = ((Page)HttpContext.Current.Handler).GetRouteUrl(id);

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

2 голосов
/ 03 февраля 2010

Я заставил GetRouteUrl работать, используя приведенное выше предложение Никса.

Я также нашел альтернативный способ сделать это без использования GetRouteUrl. Вы генерируете его вручную, используя GetVirtualPath

public static string GetUrl(int productId)
{
    var parameters = new RouteValueDictionary { { "productId", productId } };
    var vpd = RouteTable.Routes.GetVirtualPath(null, "product-details", parameters);
    return vpd.VirtualPath;
} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...