请在这种情况下需要帮助:
我有一个区域“\ UI”,其中一个Controller“ActionController”和他的View“Login.cshtml”也在他的UIAreaRegistration类中:
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 }
);
但是没有用,请问我该怎么办?
提前致谢
答案 0 :(得分: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 }
);
}
更简单的解决方案是在默认控制器上创建一个操作,将用户重定向到您的区域