gpt4 book ai didi

asp.net-mvc - ASP.NET MVC 路由 - 无限变量树

转载 作者:行者123 更新时间:2023-12-04 05:00:55 26 4
gpt4 key购买 nike

我有这样的链接:

https://myhost.com/Forums/Category/
https://myhost.com/Forums/SubCategory/
https://myhost.com/Forums/SubSubCategory/

现在这个路由配置正在捕获上面的路由:
context.MapRoute(
"Forums_category",
"Forums/{category}",
new { controller = "Forums", action = "ThreadList" }
);

这是我想使用的:
https://myhost.com/Forums/Category/SubCategory/SubSubCategory

我希望它被捕获为:
context.MapRoute(
"Forums_category",
"Forums/{THIS_IS_IGNORED}/{category}",
new { controller = "Forums", action = "ThreadList" }
);

所以,基本上我希望它只捕获链接中的最后一个变量。这可能吗?

最佳答案

使用通配符(又名“catch all”)参数(以 * 字符为前缀):

context.MapRoute(
"Forums_category",
"Forums/{*category}",
new { controller = "Forums", action = "ThreadList" }
);

这将导致所有剩余的路径段,包括斜杠,都存储在 category 中。 .

如果您只对最后一段感兴趣,您可以搜索最后一个斜杠字符,如果找到,则删除前面的部分。您可能不喜欢考虑尾部斜杠,因此请先修剪它们。

像这样的事情会起作用:
category = category.TrimEnd('/');

int lastSlash = category.LastIndexOf('/');
if (lastSlash >= 0)
{
category = category.Substring(lastSlash + 1);
}

关于asp.net-mvc - ASP.NET MVC 路由 - 无限变量树,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16155475/

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