0

请我在这种情况下需要帮助:

我在他的 UIAreaRegistration 类中有一个带有一个控制器“ActionController”和他的视图“Login.cshtml”的区域“\UI”:

public class UIAreaRegistration : AreaRegistration
{
    public override string AreaName
    {
        get { return "UI"; }
    }

    public override void RegisterArea(AreaRegistrationContext context)
    {
        context.MapRoute(
            "UI_default",
            "UI/{controller}/{action}/{id}",
            new { controller = "Account", action = "Login", id = UrlParameter.Optional }
        );
    }
}

现在我希望 Login.cshtml 成为应用程序的第一个视图。然后在 global.asax.cs 的“RegisterRoutes”中,我有:

AreaRegistration.RegisterAllAreas();

//Default    
//routes.MapRoute(
//    name: "Default",
//    url: "{controller}/{action}/{id}",
//    namespaces: new[] { "", "" },
//    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
//);

routes.MapRoute(
    name: "Default",
    url: "{area}/{controller}/{action}/{id}",
    defaults: new { area = "UI", controller = "Account", action = "Login", id = UrlParameter.Optional }
);

但是没有用,请问我该怎么办?

提前致谢

4

1 回答 1

0

您要做的是使您的 UI 区域成为默认区域,因此 UI 中的任何控制器都可以在 URL 中没有 UI 前缀的情况下访问。问题在于根文件夹中的控制器将不再可访问。如果这是您想要的,您可以通过更改区域路线注册来做到这一点:

 public override void RegisterArea(AreaRegistrationContext context)
    {
        context.MapRoute(
            "UI_default",
            "UI/{controller}/{action}/{id}",
            new { controller = "Account", action = "Login", id = UrlParameter.Optional }
        );
    }

至:

 public override void RegisterArea(AreaRegistrationContext context)
    {
        context.MapRoute(
            "UI_default",
            "{controller}/{action}/{id}",
            new { controller = "Account", action = "Login", id = UrlParameter.Optional }
        );
    }

更简单的解决方案是在默认控制器上创建一个操作,将用户重定向到您的区域

于 2013-04-02T17:58:02.590 回答