Domanda

Alcuni retroscena su quello che sto facendo

Io di solito piace avere le mie pagine restituire l'URL necessario per accedervi. Così io normalmente hanno un metodo in questo modo

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

sulle mie altre pagine / controlli che hanno bisogno di accedere a questa pagina sarò sufficiente impostare il collegamento come

hl.NavigateUrl = ProductDetails.GetUrl(id);

Sto giocando intorno con il nuovo materiale UrlRouting in 4,0 e corse in qualcosa che non sono sicuro che funzionerà. Sto cercando di utilizzare il Page.GetRouteUrl nel mio metodo statico, ed ovviamente è far saltare in aria a causa di pagina non essere statica.

Qualcuno sa se è possibile replicare quello che sto facendo con GetRouteUrl?

thx

È stato utile?

Soluzione

Si può fare qualcosa di simile:

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

. Nota: Se si chiama questo metodo da un'altra pagina, non si può ottenere il risultato desiderato se è relativo specifico, in qualche modo ... ma è buono come si può ottenere con statico Credo

Altri suggerimenti

Ho GetRouteUrl di lavoro utilizzando Nicks suggerimento sopra.

Ho anche trovato un modo alternativo per farlo w / o utilizzando il GetRouteUrl. Tu sei fondamentalmente generando manualmente utilizzando 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;
} 
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top