ルートが 2 つあるエリアを作ることは可能ですか。例えば:
[RouteArea("{culture}/testarea")] <-- specific culture
[RouteArea("testarea")] <-- default culture
LocalizableAreaBaseController ....
ありがとう!
ルートが 2 つあるエリアを作ることは可能ですか。例えば:
[RouteArea("{culture}/testarea")] <-- specific culture
[RouteArea("testarea")] <-- default culture
LocalizableAreaBaseController ....
ありがとう!
これは、ルート制約を使用して実現できます。
public class TestAreaAreaRegistration : AreaRegistration
{
public override string AreaName
{
get
{
return "TestArea";
}
}
public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
"TestArea_culture",
"{culture}/TestArea/{controller}/{action}/{id}",
new { action = "Index", id = UrlParameter.Optional },
new { culture = @"^[A-Za-z]{2}(\-[A-Za-z]{2})$"}
);
context.MapRoute(
"TestArea_default",
"TestArea/{controller}/{action}/{id}",
new { action = "Index", id = UrlParameter.Optional }
);
}
}
または
[RoutePrefix("{culture:regex(^[A-Za-z]{2}(\-[A-Za-z]{2})$)}/TestArea")]
[RoutePrefix("TestArea")]
public class TestController : ApiController {
}
(この特定の正規表現制約は、「en」や「en-gb」などに一致します)