C# Can';我不明白为什么这条MVC2路线没有';行不通

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 =

我试图创建一个带有正则表达式约束的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 = @"^[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上使用,因此它是小写的,就像正则表达式所建议的那样。我会把它加到问题上的,伙计!我忘记在测试之前设置文化动作了!谢谢你给我的光!