基本上我想拿一个网址:
http://example.com/community/www.foo.com/bar
...并在视图中可以访问的某个变量中,使用http://example.com/community/将www.foo.com/bar视图提供给我的http://example.com/community/www.foo.com视图。
怎么可以这样做?
注意:我试过这个:
routes.MapRoute(
"Community",
"{controller}/{url}",
new { controller = "Community", action = "Index", url = "" }
);
使用http://example.com/community/www.foo.com/bar但不使用{{3}}(IIS尝试解析后者并提供404)。
答案 0 :(得分:2)
来自MSDN:
有时您必须处理包含变量的URL请求 网址段数。定义路径时,可以指定该路径 如果一个URL的段数多于模式中的段数,则额外的 细分被视为最后一部分的一部分。处理 通过这种方式,您可以使用a标记最后一个参数 星号(*)。这被称为全能参数。一条路线 使用catch-all参数也将匹配不包含的URL 最后一个参数的任何值。以下示例显示了一条路线 与未知数量的段匹配的模式。
query/{queryname}/{*queryvalues}
在你的情况下,它将是:
routes.MapRoute(
"Community",
"{controller}/{*url}",
new { controller = "Community", action = "Index", url = "" }
);
替代且更健壮的方法是对URL部分使用某种编码 - 例如来自RFC4648的Base64URI编码