0

我的 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

有谁知道可能是什么原因造成的?

4

1 回答 1

4

当你把东西放在 {} 之间时,它就会变成一个变量。所以你的路线应该看起来像这样:

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在第二个路由中使用默认值。

于 2013-01-22T16:11:42.303 回答