在asp.net MVC 2中是否有办法可以路由请求并忽略一部分URL并作为变量传递给控制器?
我的需求声明我必须动态地将页面存储在数据库中,并且可以通过查看URL并读取URL段来查找相关页面来访问它们。实际上,我需要一个站点控制器,URL的剩余部分将被传递到该控制器。
Site-Controller/this/is/a/page
所以如果网站控制器拿起/ this /是/ a / page'字符串'
这可能吗?
谢谢!
答案 0 :(得分:3)
是的,使用通配符路由,例如:
routes.MapRoute(
"SiteController", // Route name
"Site-Controller/{*url}", // URL with parameters
new { controller = "SiteController", action = "Index" }, // Parameter defaults
null // constraints
);
然后你的行动如下:
public ActionResult Index(string url)
{
}
答案 1 :(得分:2)
在Global.asax中创建一个通配符Route,它捕获url第一段之后的所有内容并将其传递给Action方法:
routes.MapRoute("Page",
"Site-Controller/{*urlsegments}",
new {
controller = "Site-Controller",
action = "YourAction",
urlsegments = ""
});
确保您的Action方法接受'urlsegments'参数,您可以从那里使用它:
public ActionResult YourAction(string urlsegments)
{
// Do something with the segments here
}