我有一个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
有没有人有任何想法可能导致这个?
答案 0 :(得分: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
,如第二条路线所示。