我正在研究一个非常普通的mvc项目,我有三条不同的路线:
按ID显示产品的路线
routes.MapRoute(
"get-by-id",
"{controller}/{id}",
new { action = "GetById" },
new { id = @"\d+" }
);
按类别显示产品的路线
routes.MapRoute(
"get-by-category",
"{controller}/{category}",
new { action = "GetByCategory" },
new { category = @"\w+" }
);
默认路线
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
Conslusion:我希望 / products / create 请求属于默认路由(因为我想要“创建”到被渲染为动作)而不是按类别划分路线(因为它将“创建”作为字符串)。
答案 0 :(得分:1)
使用Route Debuger它将帮助您调试路由以确定何时调用哪些路由。在asp.net mvc上工作时我常常遇到的工具之一。
BTW - 查看您的路线,那里没有可以映射到产品/创建的路线。在这种情况下,它只会带你到默认路线。您需要指定要映射到Products控制器的路径,如果您想要创建一个Create的操作,则需要具有" Products / Create"其动作指向Get-by-id动作
routes.MapRoute(
"get-by-id",
"{controller}/Create/{id}",
new { action = "GetById" },
new { id = @"\d+" }
);