代碼貼出來,不然救不了你
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")
@请叫我小强:
報錯是404嗎
@RosonJ: 是的。
@请叫我小强:
看下你的Global
//...
RouteConfig.RegisterRoutes(RouteTable.Routes);
//...
AreaRegistration.RegisterAllAreas();
AreaRegistration必須在RouteConfig之後
@RosonJ: 能否问下为什么?
@RosonJ: 那这个代码AreaRegistration.RegisterAllAreas()需要在RouteConfig.cs和Global.asax同时编写吗?
@请叫我小强:
註冊統一是寫在Global.asax喔
楼上的正解
AreaRegistration必須在RouteConfig之後
如果同时使用具有路由属性的区域和具有基于约定的路由的区域(由AreaRegistration类设置),则需要确保在配置MVC属性路由之后,但在设置默认的基于约定的路由之前,进行区域注册。原因是应该从最具体的(属性)到更一般的(区域注册)到薄雾通用(默认路由)对路由注册进行排序,以免通用路由因过早匹配传入请求而“隐藏”更具体的路由。
您这是机翻的吧
@请叫我小强: 对,英文不行,但是是这个理
你看我的使用,通过控制器使添加特性路由