1

ルートが 2 つあるエリアを作ることは可能ですか。例えば:

[RouteArea("{culture}/testarea")] <-- specific culture
[RouteArea("testarea")]  <-- default culture
LocalizableAreaBaseController ....

ありがとう!

4

2 に答える 2

1

これは、ルート制約を使用して実現できます。

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」などに一致します)

于 2013-09-11T15:52:57.817 に答える