ASP.NET网站中的深度优先嵌套路由
发布时间:2020-12-16 09:38:10 所属栏目:asp.Net 来源:网络整理
导读:我一直在探索 System.Web.Routing 命名空间,玩限制等等,但我看不到实现这个的方法. 我正在使用WebPages / Razor框架在ASP.NET网站(非WAP,非MVC)上工作. 我正在尝试实现一种“嵌套路由”形式,其中路由可以包含仅在父匹配时尝试的子路由;每个孩子都试图匹配URI
我一直在探索
System.Web.Routing 命名空间,玩限制等等,但我看不到实现这个的方法.
我正在使用WebPages / Razor框架在ASP.NET网站(非WAP,非MVC)上工作. 我正在尝试实现一种“嵌套路由”形式,其中路由可以包含仅在父匹配时尝试的子路由;每个孩子都试图匹配URI的“余数”.如果愿意的话,“深度优先”路线匹配搜索. routes.Add(new ParentRoute("{foo}/{*remainder}",new[] { new ParentRoute("{bar}/{*remainder}",new[] { new Route("{baz}"),new Route("{zip}"),}),new ParentRoute("{qux}/{*remainder}",)); 为简洁起见,我已经排除了必要的约束/处理程序(以及其他参数). 在任何情况下,通过树下降的每个步骤都将匹配URI的{* remainder}尾部.如果分支失败,它会向上移动到下一个分支,基本上测试如下: foo foo/bar foo/bar/baz foo/bar/zip foo/qux foo/qux/baz foo/qux/zip 现在,我当然不会问“请写代码”,而是一个正确方向的手势. 我想在哪里查看API才能开始实现这样的功能?我可以找到无数有关编写路由,约束等的教程和信息,但不能扩展路由引擎. 附录 >请注意,我知道从这样的“路由树”生成URL会很复杂;这不是我打算实施的. 解决方法
我有以下代码,但有一点我不确定你想如何处理它:你知道有多少孩子可以最大限度地拥有一条路线吗?
在Global.asax中: public static void RegisterRoutes(RouteCollection routes) { routes.Add(new Route("test/{path}",new RouteValueDictionary { { "path",string.Empty } },new TestingRouteHandler())); } TestingRoutHandler类: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Web.Routing; using System.Web; using System.Web.UI; using System.Web.Compilation; namespace WebApplication1 { class TestingRouteHandler : IRouteHandler { public IHttpHandler GetHttpHandler(RequestContext requestContext) { //This is where you should treat the request,test if the file exists and if not,use the parent part of the url string aspxFileName = string.Format("~/{0}.aspx",requestContext.HttpContext.Request.Url.PathAndQuery.Replace("/",string.Empty)); return (IHttpHandler)BuildManager.CreateInstanceFromVirtualPath(aspxFileName,typeof(Page)) as Page; } } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- dependency-injection – 如何使用ASP.NET MVC 3 RTM配置依
- asp.net – 人们如何调用aspx文件以区别于aspx.cs / aspx.v
- asp.net – 运行Quartz.NET嵌入式或作为Windows服务的优点和
- asp.net – recaptcha https问题https://api-secure.recapt
- asp.net-mvc – 如何在ASP.NET MVC控制器工厂中处理异常
- asp.net – 在非开发环境中省略从Web API方法返回的错误消息
- asp.net-mvc – ASP.NET MVC – 使用表单发布多个复杂对象
- asp.net-mvc-4 – ASP.NET Active Directory搜索
- asp.net – Linq更新查询生成哪里0 = 1?
- asp.net-web-api – 如何在MVC4 Web API中的自定义绑定器中