c# – 在Webforms中生成带URL路由的URL
发布时间:2020-12-15 04:17:41 所属栏目:百科 来源:网络整理
导读:我知道在MVC框架中,你有 Html类来创建URL: Html.ActionLink("About us","about","home"); 但是如果你想在Webforms中生成Urls呢? 我没有找到关于使用Webforms生成URL的详细信息. 例如,如果我正在生成这样的路线: Route r = new Route("{country}/{lang}/ar
我知道在MVC框架中,你有
Html类来创建URL:
Html.ActionLink("About us","about","home"); 但是如果你想在Webforms中生成Urls呢? 我没有找到关于使用Webforms生成URL的详细信息. 例如,如果我正在生成这样的路线: 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); 如何使用路由表数据生成URL. 如何根据我的路线生成URL? 例如. / ca /?? en / articles / 123 /文章标题没有 解决方法
正如您所说,ASP.NET MVC为您提供了一组帮助方法来“反向查找”RouteTable并为您生成URL.我还没玩过这么多,但据我所知,你需要在RouteCollection上调用GetVirtualPath方法(很可能是RouteTable.Routes).所以类似于:
Dim routedurl = RouteTable.Routes.GetVirtualPath(context,rvd).VirtualPath 您需要传递RequestContext和RouteValueDictionary. RouteValueDictionary包含路由参数(所以在你的情况下类似于=“UK”,lang =“EN-GB”等.棘手的部分是RequestContext,因为它不是普通HttpContext的一部分.你可以将它推入您的IRouteHandler中的HttpContext: requestContext.HttpContext.Items("RequestContext") = requestContext 然后在需要时在IHttpHandler(aspx页面)中再次恢复它: Dim rvd = New RouteValueDictionary(New With {.country = "UK",.lang = "EN-GB"}) Dim routedurl = RouteTable.Routes.GetVirtualPath(context.Items("RequestContext"),rvd).VirtualPath 在VB中回应C#问题的道歉,只是我必须提供的ASP.NET路由站点是在VB.NET中. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |