c# - webapi - route prefix




Generare un URL con il routing URL in Webforms (2)

So che in MVC Framework hai la classe Html per creare URL:

Html.ActionLink("About us", "about", "home");

Ma cosa succede se si desidera generare URL in Webforms?

Non ho trovato una buona risorsa sui dettagli sulla generazione di URL con Webforms.

Ad esempio, se sto generando percorsi in questo modo:

Route r = new Route("{country}/{lang}/articles/{id}/{title}",
                  new ArticleRouteHandler("~/Forms/Article.aspx"));
Route r2 = new Route("{country}/{lang}/articles/",
                  new ArticleRouteHandler("~/Forms/ArticlesList.aspx"));

Routes.Add(r);
Routes.Add(r2);

Come potrei generare URL usando i dati della tabella di routing.

Come posso generare URL in base ai miei percorsi?

per esempio. / ca / ​​it / articles / 123 / Articolo-Titolo senza


Come dici tu, ASP.NET MVC ti offre un set di metodi di supporto per "reverse lookup" della RouteTable e genera un URL per te. Non ho ancora giocato con questo molto, ma per quanto posso vedere è necessario chiamare il metodo GetVirtualPath su una RouteCollection (molto probabilmente RouteTable.Routes). Quindi qualcosa come:

Dim routedurl = RouteTable.Routes.GetVirtualPath(context, rvd).VirtualPath

È necessario passare RequestContext e RouteValueDictionary. RouteValueDictionary contiene i parametri del percorso (quindi nel tuo caso qualcosa come county = "UK", lang = "EN-GB" ecc. La parte difficile è RequestContext in quanto non fa parte del normale HttpContext. Puoi inserirlo nel HttpContext in IRouteHandler:

requestContext.HttpContext.Items("RequestContext") = requestContext

e quindi ripristinalo di nuovo nella tua IHttpHandler (pagina aspx) quando richiesto:

Dim rvd = 
  New RouteValueDictionary(New With {.country = "UK", .lang = "EN-GB"})
Dim routedurl = 
  RouteTable.Routes.GetVirtualPath(context.Items("RequestContext"), rvd).VirtualPath

Ci scusiamo per aver risposto a una domanda C # in VB, era solo che il sito di routing ASP.NET che avevo a disposizione era in VB.NET.


Collegamento ipertestuale hl = new Hyperlink (); hl.Text = "clicca qui"; hl.NavigateUrl = "~ / Form / Article.aspx"; MostlyAnyControl.Controls.Add (hl);

come per metterlo in una lista ... o (1) loop / iterate, o (2) Linq to XML.





url-routing