asp.net-mvc – 如何动态添加到ASP.NET MVC RouteTable?
发布时间:2020-12-16 06:44:47 所属栏目:asp.Net 来源:网络整理
导读:我们的网站上有一个区域,人们可以在该区域注册并在我们想要在?/ pageSlug上托管的网站上获得他们自己的页面.我试过在Global.asax中使用规则,但这打破了允许?/ Controller直接映射到Index操作的基本默认路由.我不被允许在userSlug前放置任何类型的分隔符,所以
我们的网站上有一个区域,人们可以在该区域注册并在我们想要在?/ pageSlug上托管的网站上获得他们自己的页面.我试过在Global.asax中使用规则,但这打破了允许?/ Controller直接映射到Index操作的基本默认路由.我不被允许在userSlug前放置任何类型的分隔符,所以?/ p / pageSlug在这里不是一个真正的选项.
在将用户页面添加到路由方面,我正在App_Start中的页面循环并明确地将它们添加到RoutesTable.这工作正常,我们已经设置了足够长的AppPool刷新,使其成为一天一次的任务.这确实让我们为我们的用户提供了24小时的“为网页直播”的转变,我正试图解决这个问题. 理想情况下,我想做的是在用户注册后动态地将相关路由添加到RouteTable.我试过这样做: RouteTable.Routes.Add( RouteTable.Routes.MapRoute( toAdd.UrlSlug + "Homepage",toAdd.UrlSlug,new { controller = "Controller",View = "View",urlSlug = toAdd.UrlSlug } ) ); 但这似乎不起作用.我无法在其他任何地方找到解决方案,而且我确信我的代码非常天真,并且缺乏对路由的理解 – 请帮忙! 解决方法
如果您尝试使用路径约束,该怎么办?获取所有用户的列表并约束所选路由以匹配该列表中的条目
public class UserPageConstraint : IRouteConstraint { public static IList<string> UserPageNames = (Container.ResolveShared<IUserService>()).GetUserPageNames(); bool _IsUserPage; public UserPageConstraint(bool IsUserPage) { _IsUserPage = IsUserPage; } public bool Match(HttpContextBase httpContext,Route route,string parameterName,RouteValueDictionary values,RouteDirection routeDirection) { if (_IsUserPage) return UserPageNames.Contains(values[parameterName].ToString().ToLower()); else return !UserPageNames.Contains(values[parameterName].ToString().ToLower()); } } 然后在Global.asax.cs中,为用户设置路由,如下所示: routes.MapRoute("UserHome","{userPage}",new { controller = "UserPageController",action = "Index" },new { userPage = new UserPageConstraint(true) }); 对于上面这个路由,在UserPageController的动作’index’中,我们将userPage作为参数. 对于相对于userPage Home的其他路由,我们可以相应地添加路由.例如,userdetails页面路由可以添加如下: routes.MapRoute("UserHome","{userPage}/mydetails",action = "Details" },new { userPage = new UserPageConstraint(true) }); 你可以试试看看. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 一个简答的Access下的分页asp.net代码
- asp.net-mvc – Donut hole缓存 – 排除MiniProfiler.Rende
- asp.net-mvc – 带问号的MVC路由段?
- asp.net-core – 应用程序中断访问dbcontext,Asp .net核心w
- asp.net-mvc-3 – MVC3视图继承不可能?
- asp.net-mvc – 确保您的Repository和UnitOfWork类共享相同
- asp.net – 从Mvc Action中获取WebApi UrlHelper的实例
- 检测ASP.NET网站的出站连接排队
- ASP.Net Identity 2.0中的不同用户类型
- asp.net-core – ASP.NET 5中RegisterObject / QueueBackgr
推荐文章
站长推荐
- asp.net-mvc – 如何编辑MVC4表单中的子对象?
- asp.net – 添加新行到datatable的顶部
- asp.net-mvc – 使用Razor的ASP.NET MVC 3 – 将
- asp.net-mvc – ASP.NET DisplayFormat dd / MM
- ASP.NET:如何从javascript访问转发器生成的元素
- asp.net-mvc – Elmah基本设置问题/问题
- asp.net – 如何在回发触发器中添加进度条
- asp.net – 为什么我们应该通过部分视图使用MVC
- asp.net-mvc – ASP.NET MVC是否可以从数据库中提
- asp.net-mvc – ASP.NET MVC模型绑定器的问题
热点阅读