Asp.net mvc 如何将特定区域的视图配置为MVC4应用程序的主入口?
请告诉我需要此场景的帮助: 我在UIAreaRegistration类中有一个区域“\UI”,其中有一个控制器“ActionController”和他的视图“Login.cshtml”:Asp.net mvc 如何将特定区域的视图配置为MVC4应用程序的主入口?,asp.net-mvc,razor,asp.net-mvc-4,routes,Asp.net Mvc,Razor,Asp.net Mvc 4,Routes,请告诉我需要此场景的帮助: 我在UIAreaRegistration类中有一个区域“\UI”,其中有一个控制器“ActionController”和他的视图“Login.cshtml”: public class UIAreaRegistration : AreaRegistration { public override string AreaName { get { return "UI"; } } public override void
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的“registerOutes”中,我有:
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 }
);
但是没用,我该怎么办
提前感谢您正在尝试的是将您的UI区域设置为默认区域,以便在URL中不使用UI前缀即可访问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 }
);
}