asp.net-mvc – Asp.Net自定义路由和自定义路由并在控制器之前添加类别
发布时间:2020-05-28 05:15:47 所属栏目: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-mvc-3 – 此版本的SQL Server不支持没有聚集索引的
- asp.net – 用于Basic或Windows身份验证的无限重定向循环?
- 在ASP.NET中的OpenID认证?
- asp.net-mvc-4 – 在ASP.NET MVC中包文件位置
- asp.net-mvc – mvc 4 beginform with route name
- asp.net-mvc – 在ASP.NET MVC中,response.redirect如何工作
- asp.net-mvc – 在MVC Razor中,如何在子布局下面定义一个Re
- asp.net – 实体框架CTP5,代码优先.可选的导航属性
- asp.net-mvc – 使用ASP.NET MVC导出数据到Excel文件4 C#正
- asp-classic – 使用SMTP身份验证的经典ASP发送电子邮件
推荐文章
站长推荐
- asp.net – 这个LINQ statment是否容易受SQL注入
- asp.net-mvc – 适用于大型网站的ASP.NET MVC项目
- 在ASP.NET登录控件页面加载上设置焦点到文本框
- asp.net – Elmah错误日志记录,我可以只记录一条
- 如何使用asp.net 5项目运行nunit测试,特别是使用
- asp.net – 在aspnet核心1应用程序的逻辑层中获取
- 当空的asp.net时,ListView LayoutTemplate不显示
- asp.net – 在web用户控件中传递int数组作为参数
- 实体框架 – 等同于.HasOptional在实体框架核心1
- asp.net-mvc – 使用Ninject时如何处理DBContext
热点阅读
