asp.net mvc 自定义路由及其伪静态设置

22 篇文章 0 订阅

1.新建一个类CmsRoute继承于RouteBase

 public class CmsRoute: RouteBase
    {
        public override RouteData GetRouteData(HttpContextBase httpContext)
        {
            var data = new RouteData(this, new MvcRouteHandler());
            string RequestUrl = httpContext.Request.RawUrl;
            if (!string.IsNullOrEmpty(RequestUrl))
            {
                RequestUrl = RequestUrl.ToString();
            }
            String[] arrTiem = RequestUrl.Split('/');//根据请求路径而进行的分割 home/index/gg.html 或 home/index/gg
            if (arrTiem.Length>=2)
            {
                //开始路由的基本配置
                data.Values.Add("controller", arrTiem[1]);
                data.Values.Add("action", arrTiem[2].Split('.')[0]);
                //data.Values.Add("gg", gg);//额外参数
                //区域配置
                data.Values.Add("namespaces", new[] { "WebApplication2.Areas.tuku.Controllers" });
                data.DataTokens.Add("area", "tuku");
                return data;
            }

            return null;//不匹配走默认。
        }

        public override VirtualPathData GetVirtualPath(RequestContext requestContext, RouteValueDictionary values)
        {
            throw new NotImplementedException();
        }
    }
2.在RouteConfig中注册此路由

public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
            routes.Add(new CmsRoute());
            routes.MapRoute(    //Admin Route
             "tuku", // Route name
             "{controller}/{action}/{id}", // URL with parameters
             new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
             , namespaces: new[] { "WebApplication2.Areas.tuku.Controllers" }
         ).DataTokens.Add("area", "tuku");
            routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
            );
        }
3.伪静态web.config设置
  <system.webServer>
    <validation validateIntegratedModeConfiguration="false"/>
    <modules runAllManagedModulesForAllRequests="true"></modules>
  </system.webServer>

ps:这样设置伪静态自定义路由的方法总有些不好用。运用在项目上,总是不稳定,估计是哪里配置问题。坑爹啊简直。。。。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值