【问题标题】:ASP.NET MVC Routing - One cancelling the other outASP.NET MVC 路由 - 一个取消另一个
【发布时间】:2013-01-23 00:11:42
【问题描述】:

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

有人知道是什么原因造成的吗?

【问题讨论】:

  • 告诉我们您的测试网址是什么。
  • 路由 VoucherPreviewNdddewUser 匹配第一个 URL,第二个路由 (Regdfsdfsdf) 不匹配第二个 URL

标签: c# asp.net-mvc asp.net-mvc-routing


【解决方案1】:

当您在 {} 之间放置一个变量时。所以你的路线应该看起来像这样:

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,就像在第二个路由中一样。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-15
    • 2013-05-26
    • 1970-01-01
    • 2012-12-13
    • 2011-06-02
    相关资源
    最近更新 更多