C# 路线映射不适用于";面积“;
我读了很多关于这个问题的书,但我想不出来 路由和ASP.NETMVC的一切都非常简单,但我还是坚持这一点 问题是,我试图使用以下表单访问给定的url: {area}/{controller}/{action} 但是{area}没有注册。我的默认路由也不起作用(不起作用,因为我需要转到localhost:port/Home,而不是只转到localhost:port)/ 这是我的代码: 路线图:C# 路线映射不适用于";面积“;,c#,asp.net-mvc,asp.net-mvc-3,asp.net-mvc-4,razor,C#,Asp.net Mvc,Asp.net Mvc 3,Asp.net Mvc 4,Razor,我读了很多关于这个问题的书,但我想不出来 路由和ASP.NETMVC的一切都非常简单,但我还是坚持这一点 问题是,我试图使用以下表单访问给定的url: {area}/{controller}/{action} 但是{area}没有注册。我的默认路由也不起作用(不起作用,因为我需要转到localhost:port/Home,而不是只转到localhost:port)/ 这是我的代码: 路线图: public class RouteConfig { public static void Reg
public class RouteConfig
{
public static void RegisterRoute(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}")
route.MapRoute(
"Default",
"{controller}/{action}",
new {controller = "Home", action = "Index"}
);
}
}
public class RouteConfig
{
public static void RegisterRoute(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}")
route.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new {controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
}
这是未注册的区域:
public class TransaccionesAreaRegistration : AreaRegistration
{
public override string AreaName
{
get{
return “Transacciones”;
}
}
public override void RegisterArea(AreaRegistrationContext context){
context.MapRoute(
"Transacciones_default",
"Transacciones/{controller}/{action}/{id}",
new { controller = "Transacciones", action = "Index", id = UrlParameter.Option}
);
}
}
public class TransaccionesAreaRegistration : AreaRegistration
{
public override string AreaName
{
get{
return “Transacciones”;
}
}
public override void RegisterArea(AreaRegistrationContext context){
context.MapRoute(
“Transacciones_default”,
“Transacciones/{controller}/{action}/{id}”,
new { action = ”Index”, id = UrlParameter.Optional },
new string[] { "MyApp.Transacciones.Controllers" } // specify the new namespace
);
}
}
------------------------------OR Try This--------------------------------
public class RouteConfig
{
public static void RegisterRoute(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}")
AreaRegistration.RegisterAllAreas();
route.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new {controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
}
最后,这是我的global.asax(我确实调用AreaRegistration.Registeralareas()方法):
我真的很感激你给我一些建议,我想我已经花了足够的时间在谷歌上搜索了:O)试试这个
路线图:
public class RouteConfig
{
public static void RegisterRoute(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}")
route.MapRoute(
"Default",
"{controller}/{action}",
new {controller = "Home", action = "Index"}
);
}
}
public class RouteConfig
{
public static void RegisterRoute(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}")
route.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new {controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
}
这是未注册的区域:
public class TransaccionesAreaRegistration : AreaRegistration
{
public override string AreaName
{
get{
return “Transacciones”;
}
}
public override void RegisterArea(AreaRegistrationContext context){
context.MapRoute(
"Transacciones_default",
"Transacciones/{controller}/{action}/{id}",
new { controller = "Transacciones", action = "Index", id = UrlParameter.Option}
);
}
}
public class TransaccionesAreaRegistration : AreaRegistration
{
public override string AreaName
{
get{
return “Transacciones”;
}
}
public override void RegisterArea(AreaRegistrationContext context){
context.MapRoute(
“Transacciones_default”,
“Transacciones/{controller}/{action}/{id}”,
new { action = ”Index”, id = UrlParameter.Optional },
new string[] { "MyApp.Transacciones.Controllers" } // specify the new namespace
);
}
}
------------------------------OR Try This--------------------------------
public class RouteConfig
{
public static void RegisterRoute(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}")
AreaRegistration.RegisterAllAreas();
route.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new {controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
}
试试这个
路线图:
public class RouteConfig
{
public static void RegisterRoute(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}")
route.MapRoute(
"Default",
"{controller}/{action}",
new {controller = "Home", action = "Index"}
);
}
}
public class RouteConfig
{
public static void RegisterRoute(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}")
route.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new {controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
}
这是未注册的区域:
public class TransaccionesAreaRegistration : AreaRegistration
{
public override string AreaName
{
get{
return “Transacciones”;
}
}
public override void RegisterArea(AreaRegistrationContext context){
context.MapRoute(
"Transacciones_default",
"Transacciones/{controller}/{action}/{id}",
new { controller = "Transacciones", action = "Index", id = UrlParameter.Option}
);
}
}
public class TransaccionesAreaRegistration : AreaRegistration
{
public override string AreaName
{
get{
return “Transacciones”;
}
}
public override void RegisterArea(AreaRegistrationContext context){
context.MapRoute(
“Transacciones_default”,
“Transacciones/{controller}/{action}/{id}”,
new { action = ”Index”, id = UrlParameter.Optional },
new string[] { "MyApp.Transacciones.Controllers" } // specify the new namespace
);
}
}
------------------------------OR Try This--------------------------------
public class RouteConfig
{
public static void RegisterRoute(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}")
AreaRegistration.RegisterAllAreas();
route.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new {controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
}
默认路由不工作的原因 因为你从来没有注册过默认的。将此行添加到
RouteConfig
-
routes.MapRoute("Home", "", new { Controller = "Home", Action = "Index" });
所以最后的代码应该是这样的-
public class RouteConfig
{
public static void RegisterRoute(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}")
routes.MapRoute("Home", "", new { Controller = "Home", Action = "Index" });
route.MapRoute(
"Default",
"{controller}/{action}",
new {controller = "Home", action = "Index"}
);
}
}
区域似乎不工作的可能原因
可能也是同样的原因,区域注册似乎不起作用。尝试在区域注册中添加以下行-
routes.MapRoute("Transacciones_Home", "Transacciones", new { Controller = "Transacciones", Action = "Index" });
所以看起来像——
public class TransaccionesAreaRegistration : AreaRegistration
{
public override string AreaName
{
get{
return “Transacciones”;
}
}
public override void RegisterArea(AreaRegistrationContext context){
routes.MapRoute("Transacciones_Home", "Transacciones", new { Controller = "Transacciones", Action = "Index" });
context.MapRoute(
“Transacciones_default”,
“Transacciones/{controller}/{action}/{id}”,
new { controller = “Transacciones”, action = ”Index”, id = UrlParameter.Option}
);
}
}
}
默认路由不工作的原因 因为你从来没有注册过默认的。将此行添加到
RouteConfig
-
routes.MapRoute("Home", "", new { Controller = "Home", Action = "Index" });
所以最后的代码应该是这样的-
public class RouteConfig
{
public static void RegisterRoute(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}")
routes.MapRoute("Home", "", new { Controller = "Home", Action = "Index" });
route.MapRoute(
"Default",
"{controller}/{action}",
new {controller = "Home", action = "Index"}
);
}
}
区域似乎不工作的可能原因
可能也是同样的原因,区域注册似乎不起作用。尝试在区域注册中添加以下行-
routes.MapRoute("Transacciones_Home", "Transacciones", new { Controller = "Transacciones", Action = "Index" });
所以看起来像——
public class TransaccionesAreaRegistration : AreaRegistration
{
public override string AreaName
{
get{
return “Transacciones”;
}
}
public override void RegisterArea(AreaRegistrationContext context){
routes.MapRoute("Transacciones_Home", "Transacciones", new { Controller = "Transacciones", Action = "Index" });
context.MapRoute(
“Transacciones_default”,
“Transacciones/{controller}/{action}/{id}”,
new { controller = “Transacciones”, action = ”Index”, id = UrlParameter.Option}
);
}
}
}
这些问题对我很有帮助
问题是,路线登记的顺序非常重要。考虑到这一点,我开始检查我的其他区域注册,我发现所有的请求都属于第一条规则,这是一条一般规则,如下所示:
routes.MapRoute(
name : "Default",
url : {controller}{action}{id}
);
因此,在该规则之后,没有任何规则被考虑
谢谢大家的帮助,贝斯特 这些问题对我很有帮助
问题是,路线登记的顺序非常重要。考虑到这一点,我开始检查我的其他区域注册,我发现所有的请求都属于第一条规则,这是一条一般规则,如下所示:
routes.MapRoute(
name : "Default",
url : {controller}{action}{id}
);
因此,在该规则之后,没有任何规则被考虑
谢谢大家的帮助,贝斯特 “不工作”是指您找不到
404
?是的,先生。让我把最新情况说清楚。谢谢@haim770“不工作”您的意思是您找不到404
?是的,先生。让我把最新情况说清楚。谢谢@haim770Thanche@ActiveHigh,我明天会试试这个,如果有用的话会告诉你。我想你在“TransaccionesAreaRegistration”课程中指的是“上下文…”而不是“路线…”。谢谢@ActiveHigh,我明天会试试这个,告诉你它是否有效。不起作用。我想你在“TransaccionesAreaRegistration”课程中的意思是“上下文…”而不是“路线…”。谢谢你的快速回答,但这仍然不起作用。我试过这两种方法谢谢你的快速回答,但这仍然不起作用。我两个都试过了