我有以下路线,其中任何以A,F或L开头的网址都是定向的 到索引行动。它看起来像是使用了C sharp正则表达式。
context.MapRoute(
"content",
"{page}/{title}",
new { controller = "Server", action = "Index" },
new { page = @"^[AFL][0-9A-Z]{3}$" }
);
我想做类似的事情,但这次指示任何具有菜单,目标,页面或主题操作的URL转到索引操作并传递“菜单”,“目标”,“页面”或索引操作的“主题”作为参数:
有人能告诉我如何做到这一点。它看起来像C#正则表达式bubut我不知道如何做第二个我需要的表达式 路由。
答案 0 :(得分:1)
您只需要一个简单的路线约束:
context.MapRoute(
"content",
"{page}/{title}",
new { controller = "Server", action = "Index" },
new { page = @"Menus|Objectives|Pages|Topics" }
);
然后您的操作方法签名将如下所示:
public ActionResult Index(string page)
{
...
return View();
}
答案 1 :(得分:0)
请看这个例子......
http://www.asp.net/mvc/tutorials/controllers-and-routing/creating-a-route-constraint-cs 你已经用参数定义了一条路线。
routes.MapRoute(
"Content",
"Content/{TypeOfAction}",
new {controller="Content", action="Index"},
new {@"\b(Menus|Objectives|Pages|Topics)\b"}
);
假设您有一个带有Index动作的ContentController,它将TypeOfAction作为参数
处理编辑答案:
正则表达式\b
找到单词边界...没有测试它但应该工作...
http://www.regular-expressions.info/wordboundaries.html
http://www.regular-expressions.info/alternation.html