MVC5 区域行为不正常
MVC5 Area not behaving properly
这个post直接相关于:
post 修复了 index.cshtml 问题,但是它没有解决该控制器的每个视图。例如:
http://localhost:45970/Setup/Start
给出找不到资源的错误(基本上是404)。
但是 http://localhost:45970/Setup/Setup/Start
调出正确的页面。
那么需要重新配置什么才能使设置区域中该控制器的 所有 视图正确打开?
编辑 1
代码来自 SetupAreaRegistration.cs
using System.Web.Mvc;
namespace BlocqueStore_Web.Areas.Setup
{
public class SetupAreaRegistration : AreaRegistration
{
public override string AreaName
{
get
{
return "Setup";
}
}
public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
name: "Setup_default",
url: "Setup/{controller}/{action}/{id}",
defaults: new { action = "Index", controller = "Setup", id = UrlParameter.Optional },
namespaces: new[] { "BlocqueStore_Web.Areas.Setup.Controllers" }
);
}
}
}
由于你有一个名为Setup
的区域,上面的路由配置,打开http://localhost:45970/Setup/Start
会执行Setup
区域下的StartController
。你得到404错误是因为你在Setup
区域下没有StartController
,但是你可以打开http://localhost:45970/Setup/Setup/Start
成功,因为你在SetupController
和Start
操作方法下Setup
面积。
根据您的评论,您需要以下 url 模式
http://{host}/Setup/{view}
http://{host}/Admin/{view}
您可以在不使用任何区域的情况下完成。您只需要 AdminController
和 SetupController
使用默认路由。
这个post直接相关于:
post 修复了 index.cshtml 问题,但是它没有解决该控制器的每个视图。例如:
http://localhost:45970/Setup/Start
给出找不到资源的错误(基本上是404)。
但是 http://localhost:45970/Setup/Setup/Start
调出正确的页面。
那么需要重新配置什么才能使设置区域中该控制器的 所有 视图正确打开?
编辑 1
代码来自 SetupAreaRegistration.cs
using System.Web.Mvc;
namespace BlocqueStore_Web.Areas.Setup
{
public class SetupAreaRegistration : AreaRegistration
{
public override string AreaName
{
get
{
return "Setup";
}
}
public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
name: "Setup_default",
url: "Setup/{controller}/{action}/{id}",
defaults: new { action = "Index", controller = "Setup", id = UrlParameter.Optional },
namespaces: new[] { "BlocqueStore_Web.Areas.Setup.Controllers" }
);
}
}
}
由于你有一个名为Setup
的区域,上面的路由配置,打开http://localhost:45970/Setup/Start
会执行Setup
区域下的StartController
。你得到404错误是因为你在Setup
区域下没有StartController
,但是你可以打开http://localhost:45970/Setup/Setup/Start
成功,因为你在SetupController
和Start
操作方法下Setup
面积。
根据您的评论,您需要以下 url 模式
http://{host}/Setup/{view}
http://{host}/Admin/{view}
您可以在不使用任何区域的情况下完成。您只需要 AdminController
和 SetupController
使用默认路由。