gpt4 book ai didi

asp.net-mvc - 为什么这条路线不匹配

转载 作者:行者123 更新时间:2023-12-04 17:26:18 24 4
gpt4 key购买 nike

我在获取路由匹配时遇到了一些问题。

我使用 base-32 编码的 int 作为网络应用程序中幻灯片的短链接。每个幻灯片有 5 个不同的版本,我使用首字母来区分每个版本。

路由始终匹配,除非 base-32 编码的 int 的第一个字符与指定幻灯片版本的字符相同。所有 5 个前缀字母均存在此异常:n、f、c、x 和 h。

前两个字符相同会导致这些路由不匹配吗?我不知道这里发生了什么(当路由不匹配时,它们只是陷入默认状态)。

路由匹配( /na0 ):
route for na0

路由不匹配 ( /nn0 ):
route for nn0

路由匹配( /nfg ):
route for nfg

路由不匹配 ( /ffg ):
route for ffg

我很困惑。这是路由代码,以防在屏幕截图的 RouteDebug 表中不清楚:

        routes.MapRoute(
"NonBrandedSlideshow",
"n{id}",
MVC.Slideshow.NonBranded(), null,
new { id = Settings.Base32Regex }
);

routes.MapRoute(
"FullSlideshow",
"f{id}",
MVC.Slideshow.Full(), null,
new { id = Settings.Base32Regex }
);

routes.MapRoute(
"CompactSlideshow",
"c{id}",
MVC.Slideshow.Compact(), null,
new { id = Settings.Base32Regex }
);

routes.MapRoute(
"FlexibleSlideshow",
"x{id}",
MVC.Slideshow.Flexible(), null,
new { id = Settings.Base32Regex }
);

routes.MapRoute(
"Html5Slideshow",
"h{id}",
MVC.Slideshow.NonBrandedHtml5(), null,
new { id = Settings.Base32Regex }
);

我应该在这里注意,我使用的是 T4MVC (参见第 2.2.5 节),以及这些 MapRoute方法是 T4MVC 添加的扩展。 MapRoute我使用的方法等同于标准方法,我尝试使用非 T4MVC MapRoute结果相同的方法:
        routes.MapRoute(
"Html5Slideshow",
"h{id}",
new { controller = "Slideshow", action = "NonBrandedHtml5" },
new { id = Settings.Base32Regex }
);

这是 Base32Regex,尽管我已经尝试过使用和不使用此约束(例如,我使用的 Base32 实现将假设 I 和 O 为 1 和 0)。
public static partial class Settings
{
public static string Base32Regex
{
get { return @"[0-9ABCDEFGHJKMNPQRSTVWXYZ]+"; }
}
}

最佳答案

这是 ASP.NET 路由中的一个已知错误,请参阅 this answer解释和解决方法。简而言之,使用文字子段效果不佳。

关于asp.net-mvc - 为什么这条路线不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8711829/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com