首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ASP.NET MVC路由--无限变量树

ASP.NET MVC路由--无限变量树
EN

Stack Overflow用户
提问于 2013-04-23 03:47:33
回答 1查看 332关注 0票数 2

我的链接看起来像这样:

代码语言:javascript
复制
https://myhost.com/Forums/Category/
https://myhost.com/Forums/SubCategory/
https://myhost.com/Forums/SubSubCategory/

现在,此路由配置正在捕获上述路由:

代码语言:javascript
复制
context.MapRoute(
    "Forums_category",
    "Forums/{category}",
    new { controller = "Forums", action = "ThreadList" }
);

这是我想要使用的:

代码语言:javascript
复制
https://myhost.com/Forums/Category/SubCategory/SubSubCategory

我希望它被捕获为:

代码语言:javascript
复制
context.MapRoute(
    "Forums_category",
    "Forums/{THIS_IS_IGNORED}/{category}",
    new { controller = "Forums", action = "ThreadList" }
);

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-23 03:50:49

使用通配符(也称为“全部捕获”)参数(以*字符为前缀):

代码语言:javascript
复制
context.MapRoute(
    "Forums_category",
    "Forums/{*category}",
    new { controller = "Forums", action = "ThreadList" }
);

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

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

像这样的东西会起作用的:

代码语言:javascript
复制
category = category.TrimEnd('/');

int lastSlash = category.LastIndexOf('/');
if (lastSlash >= 0)
{
    category = category.Substring(lastSlash + 1);
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16155475

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档