首页 新闻 搜索 专区 学院

asp.net mvc 路由共存

0
悬赏园豆:10 [待解决问题]

各位技术大神,MVC 中的特性路由和约定路由如何共存?在区域中的控制器加上特性路由页面报错。

请叫我小强的主页 请叫我小强 | 初学一级 | 园豆:192
提问于:2020-05-22 10:42
< >
分享
所有回答(2)
0

代碼貼出來,不然救不了你

RosonJ | 园豆:3551 (老鸟四级) | 2020-05-22 11:00

routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapMvcAttributeRoutes();

        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional },
            namespaces: new string[] { "Nbuen.Controllers" }
        );

配置:
public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
"RZ_default",
"RZ/{controller}/{action}/{id}",
new { controller="Home",action = "Index", id = UrlParameter.Optional },
new string[] { "Nbuen.Areas.RZ.Controllers" }
);
}

然后在区域的控制器action指定
[Route("Lists/Users/{page?}")]
public ActionResult Index(string page = "1")

支持(0) 反对(0) 请叫我小强 | 园豆:192 (初学一级) | 2020-05-22 11:12

@请叫我小强:
報錯是404嗎

支持(0) 反对(0) RosonJ | 园豆:3551 (老鸟四级) | 2020-05-22 11:21

@RosonJ: 是的。

支持(0) 反对(0) 请叫我小强 | 园豆:192 (初学一级) | 2020-05-22 11:29

@请叫我小强:
看下你的Global

//...
RouteConfig.RegisterRoutes(RouteTable.Routes);
//...
AreaRegistration.RegisterAllAreas();

AreaRegistration必須在RouteConfig之後

支持(0) 反对(0) RosonJ | 园豆:3551 (老鸟四级) | 2020-05-22 11:40

@RosonJ: 能否问下为什么?

支持(0) 反对(0) 请叫我小强 | 园豆:192 (初学一级) | 2020-05-22 13:00
支持(0) 反对(0) RosonJ | 园豆:3551 (老鸟四级) | 2020-05-22 13:08

@RosonJ: 那这个代码AreaRegistration.RegisterAllAreas()需要在RouteConfig.cs和Global.asax同时编写吗?

支持(0) 反对(0) 请叫我小强 | 园豆:192 (初学一级) | 2020-05-22 13:16

@请叫我小强:
註冊統一是寫在Global.asax喔

支持(0) 反对(0) RosonJ | 园豆:3551 (老鸟四级) | 2020-05-22 13:24
0

楼上的正解
AreaRegistration必須在RouteConfig之後
如果同时使用具有路由属性的区域和具有基于约定的路由的区域(由AreaRegistration类设置),则需要确保在配置MVC属性路由之后,但在设置默认的基于约定的路由之前,进行区域注册。原因是应该从最具体的(属性)到更一般的(区域注册)到薄雾通用(默认路由)对路由注册进行排序,以免通用路由因过早匹配传入请求而“隐藏”更具体的路由。

熊泽-学习中的苦与乐 | 园豆:678 (小虾三级) | 2020-05-22 13:24

您这是机翻的吧

支持(0) 反对(0) 请叫我小强 | 园豆:192 (初学一级) | 2020-05-22 13:32

@请叫我小强: 对,英文不行,但是是这个理

你看我的使用,通过控制器使添加特性路由

清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册