asp.net-mvc – Asp.Net自定义路由和自定义路由并在控制器之前添
发布时间:2020-12-15 23:55:13 所属栏目:asp.Net 来源:网络整理
导读:我只是在学习MVC,并想在我的网站上添加一些自定义路由. 我的网站被拆分为品牌,因此在访问网站的其他部分之前,用户将选择一个品牌.我没有将所选品牌存储在某个地方或将其作为参数传递,而是希望将其作为URL的一部分,以便例如访问NewsControllers索引操作而不是
我只是在学习MVC,并想在我的网站上添加一些自定义路由.
我的网站被拆分为品牌,因此在访问网站的其他部分之前,用户将选择一个品牌.我没有将所选品牌存储在某个地方或将其作为参数传递,而是希望将其作为URL的一部分,以便例如访问NewsControllers索引操作而不是“mysite.com/news”我想使用“mysite.com” /品牌/新闻/”. 我真的想添加一条路线,上面写着一个URL是否有品牌,正常进入控制器/动作并通过品牌……这可能吗? 谢谢 C 解决方法
是的,这是可能的.首先,您必须创建RouteConstraint以确保已选择品牌.如果尚未选择品牌,则此路线应该失败,并且应该跟随到重定向到品牌选择器的操作的路线. RouteConstraint应如下所示:
using System; using System.Web; using System.Web.Routing; namespace Examples.Extensions { public class MustBeBrand : IRouteConstraint { public bool Match(HttpContextBase httpContext,Route route,string parameterName,RouteValueDictionary values,RouteDirection routeDirection) { // return true if this is a valid brand var _db = new BrandDbContext(); return _db.Brands.FirstOrDefault(x => x.BrandName.ToLowerInvariant() == values[parameterName].ToString().ToLowerInvariant()) != null; } } } 然后,按如下方式定义您的路线(假设您的品牌选择器是主页): routes.MapRoute( "BrandRoute","{controller}/{brand}/{action}/{id}",new { controller = "News",action = "Index",id = UrlParameter.Optional },new { brand = new MustBeBrand() } ); routes.MapRoute( "Default","",new { controller = "Selector",action = "Index" } ); routes.MapRoute( "NotBrandRoute","{*ignoreThis}",action = "Redirect" } ); 然后,在你的SelectorController中: public ActionResult Redirect() { return RedirectToAction("Index"); } public ActionResult Index() { // brand selector action } 如果您的主页不是品牌选择器,或者网站上有其他非品牌内容,则此路由不正确.您将需要BrandRoute和Default之间的其他路线,这些路线与您的其他内容的路线相匹配. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 使用ASP.NET Web服务的jQuery AutoComplete(jQuery UI 1.8r
- 维护面板滚动位置部分回传ASP.NET
- ASP.NET网站中使用Ninject 3进行依赖注入
- asp.net-mvc-4 – OAuth2和DotNetOpenAuth – 实现Google自
- asp.net-mvc – 如何覆盖视图布局声明
- asp.net-mvc – 如何为ASP.NET MVC编写自己的View引擎?
- asp.net-mvc-4 – 使用ELMAH和ajax在ASP.Net MVC 4中的Cont
- asp.net – Stack Overflow的Mini Profiler
- ASP.NET MVC CAPTCHA实现
- 反射及LINQ结果集转换dataTable并序列化 将DataTable序列
推荐文章
站长推荐
- asp.net-mvc-4 – 在常规MVC项目中使用breeze而不
- asp.net-mvc – 在将模型值传递给DefaultModelBi
- 这些ASP.NET Core依赖性警告的来源是什么?
- asp.net – 将用户重定向回原始页面
- 如何在ASP.NET中以“YYYY-MM-DD”格式获取当前日
- asp.net-mvc – MVC 4忽略DefaultModelBinder.Re
- asp.net-core – VS2017 RC Web部署 – ERROR_CE
- asp.net-mvc – Web API和ASP MVC之间的主要区别
- WCF技术剖析之三十:一个很有用的WCF调用编程技巧
- .net-core – 存储Azure Vault客户端ID和客户端密
热点阅读