ASP.NET MVC剃须刀C#中的GET路由问题

时间:2018-11-24 09:49:48

标签: asp.net-mvc-4 asp.net-mvc-5

我的代码中共有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 
                }
);

2 个答案:

答案 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相匹配,并调用产品控制器的索引操作方法,如下图所示。原因-我们为控制器产品定义了默认参数。

enter image description here

如果我们从路由1删除默认参数,则在初始/第一个请求路由2 URL模式匹配时,将调用Category Controller的Index Action方法,原因-我们为控制器Category定义了defaults参数。

仅当任何请求与注册的网址格式都不匹配时,浏览器才会返回404错误。