1
的區域是否可以具有兩條路由的區域。例如:屬性路由 - 帶有可選路由參數
[RouteArea("{culture}/testarea")] <-- specific culture
[RouteArea("testarea")] <-- default culture
LocalizableAreaBaseController ....
謝謝!
的區域是否可以具有兩條路由的區域。例如:屬性路由 - 帶有可選路由參數
[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」)
還有一個前綴,在RouteArea屬性,請使用。這將起作用。
[RouteArea("testarea"),AreaPrefix="{culture}/testarea"]
< - 特定文化
嗨。 thx回覆。但這將如何與AttributeRouting一起工作? – shkipper
我添加了一個使用ASP WebApi 2.0 RoutePrefix屬性的例子。 –
但文化參數將在區域(testarea/en/...)之後,並且如果在之前(/ en/testarea/...) – shkipper