4

关于我在做什么的一些背景

我通常喜欢让我的页面返回访问它所需的 url。所以我通常会有这样的方法

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

在我需要访问此页面的其他页面/控件上,我只需将链接设置为

hl.NavigateUrl = ProductDetails.GetUrl(id);

我正在玩弄 4.0 中的新 UrlRouting 东西,但遇到了一些我不确定是否会起作用的东西。我正在尝试在我的静态方法中使用 Page.GetRouteUrl,显然由于 Page 不是静态的,它正在爆炸。

有谁知道是否可以复制我使用 GetRouteUrl 所做的事情?

谢谢

4

2 回答 2

4

您可以执行以下操作:

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

注意:如果您从另一个页面调用此方法,如果它以某种方式是相对特定的,您可能无法获得所需的结果......但我相信它与静态一样好。

于 2010-02-03T17:56:44.923 回答
3

我使用上面的尼克斯建议让 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;
} 
于 2010-02-03T20:22:22.417 回答