C# asp.net mvc中的区域?
我在根区域中有一个主页路由:C# asp.net mvc中的区域?,c#,asp.net-mvc,C#,Asp.net Mvc,我在根区域中有一个主页路由: routes.MapLocalizedRoute("HomePage", "", new { controller = "Home", action = "Index" }, new[] { "Nop.Web.Controllers" }); 还有一个叫Xahoi的地方 namespace
routes.MapLocalizedRoute("HomePage",
"",
new { controller = "Home", action = "Index" },
new[] { "Nop.Web.Controllers" });
还有一个叫Xahoi的地方
namespace Nop.Web.Areas.Xahoi
{
public class XahoiAreaRegistration : AreaRegistration
{
public override string AreaName
{
get
{
return "Xahoi";
}
}
public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
"Xahoi_default",
"Xahoi/{controller}/{action}/{id}",
new { action = "Index", id = UrlParameter.Optional },
new[] { "Nop.Web.Areas.Xahoi.Controllers" });
}
}
}
当我调用->时,它确实进入Xahoi区域的主控制器,但随后它从根目录中的主控制器运行索引视图
另外,假设我想将调用更改为just,我该怎么做?要指定默认控制器,只需将其添加到第三个参数的数组中:
public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
"Xahoi_default",
"Xahoi/{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional },
new[] { "Nop.Web.Areas.Xahoi.Controllers" });
}
它显示错误视图的问题可能是第四个参数的命名空间问题,并且它在错误的控制器中运行代码。。。或者视图文件夹结构的结构使其无法在Areas\Xahoi\Views\Home文件夹中找到视图,而是使用根视图文件夹中的索引视图。也许您在“视图”文件夹中有索引视图,而不是在“视图\主文件夹”中
要确定这是否是名称空间问题,请在新的控制器(区域中的一个)索引方法上放置断点,并查看在访问页面时它是否被击中
希望这能有所帮助首先,我建议安装以更好地理解MVC是如何“幕后”工作的 基本上,它将在几个地方寻找控制器和视图,使用“一瞥”将使这一点变得显而易见:) 在您的Xahoi区域中,是否有一个名为index的视图属于Home?e、 g.区域\Xahoi\Views\Home\Index.cshtml 除此之外,您可以在MapRoute中指定Area属性,尽管我认为默认情况下它是这样做的。下面的映射还应该将您的url更改为您所要求的内容 公共覆盖无效注册表区域(AreaRegistrationContext上下文) {
context.MapRoute(
"Xahoi_default",
"xa-hoi/{controller}/{action}/{id}",
new { Area=AreaName controller = "Home", action = "Index", id = UrlParameter.Optional },
new[] { "Nop.Web.Areas.Xahoi.Controllers" });
}