我的代码中共有3条路线。
如果我将1st的位置更改为2nd,则2nd开始工作,但1st会显示404错误。
我在下面的代码中做错了什么吗?
这是GET路线,效果很好。
routes.MapRoute(
name: "Default",
url: "{controller}/{action}",
defaults: new {
controller = "Category",
action = "Index",
Category = UrlParameter.Optional
}
);
这是GET路由,始终显示404错误。
routes.MapRoute(
name: "Default1",
url: "{Category}",
defaults: new {
controller = "Product",
action = "Index",
Category = UrlParameter.Optional
}
);
这是POST路由,效果很好。
routes.MapRoute(
name: "Default_Without_Action",
url: "{controller}/{action}/{Category}",
defaults: new {
controller = "Product",
action = "GetProducts",
Category = UrlParameter.Optional
}
);
答案 0 :(得分:0)
测试是否放置了网址:“ {controller}”,看看是否可行
routes.MapRoute(
name: "Default1",
url: "{controller}",
defaults: new {
controller = "Product",
action = "Index",
Category = UrlParameter.Optional
}
);
答案 1 :(得分:0)
我检查了两条路线,并且工作正常。
RouteConfig.cs
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
//Route -1
routes.MapRoute(
name: "Default1",
url: "{Category}",
defaults: new { controller = "Product", action = "Index", Category = UrlParameter.Optional }
);
//Route - 2
routes.MapRoute(
name: "Default",
//url: "{controller}/{action}/{id}",
//defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
url: "{controller}/{action}/{Category}",
defaults: new { controller = "Category", action = "Index", Category = UrlParameter.Optional }
);
}
在初始/首次请求时,它与路由1相匹配,并调用产品控制器的索引操作方法,如下图所示。原因-我们为控制器产品定义了默认参数。
如果我们从路由1删除默认参数,则在初始/第一个请求路由2 URL模式匹配时,将调用Category Controller的Index Action方法,原因-我们为控制器Category定义了defaults参数。
仅当任何请求与注册的网址格式都不匹配时,浏览器才会返回404错误。