asp.net-mvc – 枚举ASP.NET MVC RouteTable路由URL
发布时间:2020-12-16 03:53:34 所属栏目:asp.Net 来源:网络整理
导读:我正在试图弄清楚如何枚举RouteTable中的路由URL. 在我的场景中,我定义了以下路由: routes.MapRoute ("PadCreateNote","create",new { controller = "Pad",action = "CreateNote" });routes.MapRoute ("PadDeleteNote","delete",action = "DeleteNote" });r
我正在试图弄清楚如何枚举RouteTable中的路由URL.
在我的场景中,我定义了以下路由: routes.MapRoute ("PadCreateNote","create",new { controller = "Pad",action = "CreateNote" }); routes.MapRoute ("PadDeleteNote","delete",action = "DeleteNote" }); routes.MapRoute ("PadUserIndex","{username}",action = "Index" }); 换句话说,如果我的网站是mysite.com,mysite.com/create会调用PadController.CreateNote(),而mysite.com/foobaris会调用PadController.Index(). 我还有一个强类型用户名的类: public class Username { public readonly string value; public Username(string name) { if (String.IsNullOrWhiteSpace(name)) { throw new ArgumentException ("Is null or contains only whitespace.","name"); } //... make sure 'name' isn't a route URL off root like 'create','delete' this.value = name.Trim(); } public override string ToString() { return this.value; } } 在Username的构造函数中,我想检查以确保该名称不是已定义的路由.例如,如果调用此方法: var username = new Username("create"); 然后应该抛出异常.我需要替换什么// …确保’name’不是root的路由URL? 解决方法
通过阻止用户注册受保护的单词,这并不能完全回答您想要做的事情,但有一种方法可以约束您的路线.我们在我们的网站上有/用户名网址,我们使用了这样的约束.
routes.MapRoute( "Default",// Route name "{controller}/{action}/{id}",// URL with parameters new { controller = "Home",action = "Index",id = "" },// Parameter defaults new { controller = new FromValuesListConstraint(true,"Account","Home","SignIn" //...etc ) } ); routes.MapRoute( "UserNameRouting","{id}",new { controller = "Profile",id = "" }); 您可能只需要保留一个保留字列表,或者,如果您真的想要它是自动的,您可以使用反射来获取命名空间中的控制器列表. 您可以使用此访问路径集合.这种方法的问题是它要求您明确注册您想要“受保护”的所有路由.我仍然坚持我的说法,你最好还有一个存储在别处的保留关键字列表. System.Web.Routing.RouteCollection routeCollection = System.Web.Routing.RouteTable.Routes; var routes = from r in routeCollection let t = (System.Web.Routing.Route)r where t.Url.Equals(name,StringComparison.OrdinalIgnoreCase) select t; bool isProtected = routes.Count() > 0; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 混合WebForms/ASP.NET MVC
- asp.net-mvc – 将我的DbContext包装在Unit of Work类中是个
- 将旧版ASP.NET应用程序转换为MVC3和HTML5
- asp.net – 如何配置nginx以支持cloudflare下的signalr3?
- asp.net – 在自己的AppPool中运行每个网站有哪些优点和/或
- asp.net-identity – asp.net标识有什么用.GenerateUserTok
- asp.net-mvc – MVC存储库模式:创建模型类
- 使用log4net和ASP.NET跟踪会话变量
- asp.net-mvc – ASP.NET MVC MultiSelectList,其中所选值未
- asp.net-mvc-3 – 使用Ninject 2.2的MVC 3依赖注入将全局操
推荐文章
站长推荐
- asp.net-mvc – ASP.NET MVC 5如何在Identity 2.
- net core 项目提示未能加载导入的项目文件
- asp.net-web-api – 如何在ASP.NET Web API中验证
- asp.net-core – Asp.Net 5中的自定义ClaimsPrin
- asp.net-mvc – System.Web.Mvc.ActionFilterAtt
- Asp.Net Core 进阶(一) —— 读取appsettings.
- asp.net – 带有transfer-enconding的POST:在II
- asp.net – 如何决定在viewstate中存储什么?
- asp.net – 何时填充已排序的asp:GridView?
- asp.net-mvc – React.js与asp.net MVC混合进行验
热点阅读