ASP.NET MVC 路由 404

ASP.NET MVC routing 404

我在默认的 mvc 项目中添加了一个新路由,如下所示:

 routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
            );
routes.MapRoute(
                name:"test",
                url:"{controller}/{userId}/{action}/{cardId}",
                defaults: new {controller="User", userId=UrlParameter.Optional, action="card", cardId=UrlParameter.Optional }
            );

我有一个这样的操作方法(控制器名称为 "user"):

public ActionResult card(string userId, string cardId="")
        {
            if (string.IsNullOrEmpty(cardId))
            {
                return Json(new[]{
                    new {id=456, number="1234", name="ayj"},
                    new {id=123, number="2345", name="xxx"}
                }, JsonRequestBehavior.AllowGet);
            }
            else
            {
                return Json(new { id = 123, number = "2345", name = "xxx" }, JsonRequestBehavior.AllowGet);
            }
        }

当我访问 /user/1/card/2 时,它 return 是正确的 json,但是当我访问 /user/1/card 时,我希望它是 return 一个数组, 但结果是 return 一个 404 error。谁能帮帮我?

我认为当你使用 URL 而没有 cardId 时,路由引擎正在使用你的默认路由,因此 404,将你的自定义路由移到默认路由之上。