Page.GetRoutUrl in un metodo statico
-
25-09-2019 - |
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
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;
}