繁体   English   中英

如何在.NET-Core Mvc中处理两条路由并定向到一个动作

[英]How to handle two route and direct to one Action in .NET-Core Mvc

这是我在Startup.cs中的路线规则

routes.MapRoute(
                    name: "UnsolvedTagspecial",
                    template: "user/undo/{t}",
                    defaults: new { Controller = "user", action = "undo" }
                    );

routes.MapRoute(
                    name: "UnsolvedTag",
                    template: "user/{t}/undo",
                    defaults: new { Controller = "user", action = "undo" }
                    );

这是我在Controller中的操作:

//Controller:
public async Task<ActionResult> undo(string t)
{
    //   .....
}
  • 当我在地址行中输入http://localhost:17623/user/undo/111时,我在控制器函数中得到t的值为null
  • 但是当我在地址行中输入http://localhost:17623/user/111/undo时,我在控制器函数中得到了t = 111的值;

这让我感到困惑,谁能告诉我为什么?

这是因为您必须设置从最具体到最通用的路由。 我想你的路线会像这样

 routes.MapRoute(
                   name: "default",
                   template: "{controller=Home}/{action=Index}/{id?}");

routes.MapRoute(
                    name: "UnsolvedTagspecial",
                    template: "user/undo/{t}",
                    defaults: new { Controller = "user", action = "undo" }
                    );

routes.MapRoute(
                    name: "UnsolvedTag",
                    template: "user/{t}/undo",
                    defaults: new { Controller = "user", action = "undo" }
                    );

因此,当您输入http://localhost:17623/user/undo/111它将到达第一个路由,该路由期望id 111,但是当它执行action该参数期望string t 所以你应该放这样的路线

routes.MapRoute(
                    name: "UnsolvedTagspecial",
                    template: "user/undo/{t}",
                    defaults: new { Controller = "user", action = "undo" }
                    );

routes.MapRoute(
                    name: "UnsolvedTag",
                    template: "user/{t}/undo",
                    defaults: new { Controller = "user", action = "undo" }
                    );
routes.MapRoute(
                   name: "default",
                   template: "{controller=Home}/{action=Index}/{id?}");

从最具体到最通用

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM