Joh*_*oge 5 .net asp.net routing webforms
我在asp.net web forms 4.0中使用路由并取得了一些成功.在我的页面中,我使用Page.GetRouteURL来生成这样的路线.
<a href = '<%=GetRouteUrl("MyRoute", new {MyFirstRouteValue = "ABC", MySecondRouteValue=123}) #>' >Link Text</a>
Run Code Online (Sandbox Code Playgroud)
这非常有效,但我发现有时我需要在app_code中的类中使用此功能.我可以用String.Format手动构建路由,但这有点草率,因为它会复制定义路由的Global.asax中的代码.
当然,App_Code中的类中没有Page对象,所以我不能只调用GetRouteUrl.查看msdn上的文档,我看到一些看起来很有帮助的东西.
提供该方法用于编码方便.它相当于调用RouteCollection.GetVirtualPath(RequestContext,String,RouteValueDictionary)方法.
所以我按照文档到这个页面说明System.Web.Routing.GetVirtualPath()需要一个System.Web.Routing.RequestContext对象.我知道HttpContext对象,但我无法弄清楚RequestContext是什么.有人有运气吗?
RequestContext可用作HttpRequest对象的属性,因此您可以将其引用为HttpContext.Current.Request.RequestContext.例如,
public string GetRouteUrl(string routeName, object routeParameters)
{
var dict = new RouteValueDictionary(routeParameters);
var data = RouteTable.Routes.GetVirtualPath(HttpContext.Current.Request.RequestContext, routeName, dict );
if (data != null)
{
return data.VirtualPath;
}
return null;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2715 次 |
| 最近记录: |