C# Can';我不明白为什么这条MVC2路线没有';行不通
我试图创建一个带有正则表达式约束的ASP.NET MVC2路由来过滤语言名称(如en-us、pt-br),但不幸的是,它不起作用。看看:C# Can';我不明白为什么这条MVC2路线没有';行不通,c#,asp.net-mvc-2,C#,Asp.net Mvc 2,我试图创建一个带有正则表达式约束的ASP.NET MVC2路由来过滤语言名称(如en-us、pt-br),但不幸的是,它不起作用。看看: routes.MapRoute( "Culture", // Route name "{culture}", // URL with parameters new { controller = "Home", action = "Culture" }, // Parameter defaults new { culture =
routes.MapRoute(
"Culture", // Route name
"{culture}", // URL with parameters
new { controller = "Home", action = "Culture" }, // Parameter defaults
new { culture = @"^[a-z]{2}-[a-z]{2}$" }
);
有人知道吗
编辑:我正在测试的url是否区分大小写 “恩我们” 因此,您需要:
new { culture = @"^[a-z]{2}-[A-Z]{2}$" }
但使用此选项可使其不区分大小写:
new { culture = @"^[a-zA-Z]{2}-[a-zA-Z]{2}$" }
我不知道为什么它在你的情况下不起作用,但以下是有效的方法:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Culture",
"{culture}",
new { controller = "Home", action = "Culture" },
new { culture = @"^[a-z]{2}-[a-z]{2}$" }
);
routes.MapRoute(
"Default",
"{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
控制器:
public class HomeController : Controller
{
public ActionResult Culture(string culture)
{
return View();
}
}
URL:
http://example.com/en-us
在HomeController
上成功调用区域性
操作,并在区域性参数中传递en-us
。我在url上使用,因此它是小写的,就像正则表达式所建议的那样。我会把它加到问题上的,伙计!我忘记在测试之前设置文化动作了!谢谢你给我的光!