ASP.NET MVC 路由 - 一个取消另一个

本文关键字:一个 取消 另一个 NET MVC 路由 ASP | 更新日期: 2023-09-27 17:55:18

>我对MVC路由有问题,它通常工作得很好,但由于某种原因,中间的语句工作正常,但最后一条路由不起作用。如果我把第三条路线放在中间,它会正常工作。我不知道为什么这两条路线相互干扰。

以下是路线:

routes.MapRoute(
           "VoucherPreviewNdddewUser", // Route name
           "{Home}/{VoucherBusinessUserEntry}/{ID}/{TokenID}", // URL with parameters
           new { controller = "Home", action = "VoucherBusinessUserEntry", id = 0, TokenID = Guid.NewGuid() } // Parameter defaults
           );
                routes.MapRoute(
                "Regdfsdfsdf", // Route name
                "{LoginReg}/{Register}/{UserTrackingID}/{IsFromScript}", // URL with parameters
                new { controller = "LoginReg", action = "Register", UserTrackingID = System.Guid.Empty
                    ,isfromscript = System.Boolean.FalseString 
                } // Parameter defaults
            );

以下是网址:

http://localhost:50839/home/VoucherBusinessUserEntry/44/7209FA62-FD5F-40AE-8239-7CF1855675E8
http://localhost:50839/LoginReg/Register/7209FA62-FD5F-40AE-8239-7CF1855675E8/true

有没有人知道可能导致这种情况的原因是什么?

ASP.NET MVC 路由 - 一个取消另一个

当你在 {} 之间放置一些东西时,它变成了一个变量。 因此,您的路线应如下所示:

routes.MapRoute(
       "VoucherPreviewNdddewUser", // Route name
       "Home/VoucherBusinessUserEntry/{ID}/{TokenID}", // URL with parameters
       new { controller = "Home", action = "VoucherBusinessUserEntry", id = 0, TokenID = Guid.NewGuid() } // Parameter defaults
       );
routes.MapRoute(
            "Regdfsdfsdf", // Route name
            "LoginReg/Register/{UserTrackingID}/{IsFromScript}", // URL with parameters
            new { controller = "LoginReg", action = "Register", UserTrackingID = System.Guid.Empty
                ,isfromscript = System.Boolean.FalseString 
            } // Parameter defaults

您仍然需要定义所需的控制器和操作,但这些变量不再存在于 URL 中,因为它们是常量,无需辩论。 如果您希望它们是可变的,则需要在 URL 中使用 {controller} 和 {action},例如,默认值为 LoginReg 在第二个路由中。