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" });


}