0

我有一个 mvc 项目,我添加了一个名为 BEK 的新区域,并创建了 BEKAreaRegistration.cs。

public class BEKAreaRegistration : AreaRegistration
{
    public override string AreaName
    {
        get
        {
            return "BEK";
        }
    }

    public override void RegisterArea(AreaRegistrationContext context)
    {
        context.MapRoute(
            "BEK_default",
            "BEK/{controller}/{action}/{id}",
            new { action = "Index", id = UrlParameter.Optional }
        );
    }
}

我的 global.asax 文件如下:

    protected void Application_Start()
    {
        AreaRegistration.RegisterAllAreas(); 

        RouteTable.Routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
        RouteTable.Routes.IgnoreRoute("{*allAspx}", new { allAspx = @".*\.aspx(/.*)?" });
        RouteTable.Routes.IgnoreRoute("{*allAsmx}", new { allAsmx = @".*\.asmx(/.*)?" });
        RouteTable.Routes.IgnoreRoute("{*allAshx}", new { allAshx = @".*\.ashx(/.*)?" });
        RouteTable.Routes.IgnoreRoute("Services/{*pathInfo}");
        RouteTable.Routes.IgnoreRoute("");

        RouteTable.Routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );
    }

但是当我尝试转到 BEK/Home/Index 页面时,我得到一个错误页面。我还应该做什么?

这是错误:

无法找到该资源。说明:HTTP 404。您要查找的资源(或其依赖项之一)可能已被删除、名称已更改或暂时不可用。请查看以下 URL 并确保其拼写正确。

请求的 URL:/LMS_WEB_APP/BEK/Home

-------------------------------------------------- ------------------ 版本信息:Microsoft .NET Framework 版本:4.0.30319;ASP.NET 版本:4.0.30319.18213

4

2 回答 2

0

我认为问题在于,您在区域和应用程序中都有相同的名称控制器。就像您在正常应用程序和区域中有家庭控制器一样 ,它会导致同一控制器的重复声明。

这样做的方法是,指定控制器的 NAMESPACE,如下所示:

public override void RegisterArea(AreaRegistrationContext context)
{
    context.MapRoute(
    "BEK_default",
    "BEK/{controller}/{action}/{id}",
    new { action = "Index", id = UrlParameter.Optional }, 
    new string[] { "MyAppName.Areas.BEK.Controllers" }  // specify the new namespace
);
}

如果不是这种情况,请发布您收到的错误消息。

于 2013-08-19T11:29:09.123 回答
0

当您添加 BEK 区域时。MVC 将为您创建这些。

在此处输入图像描述

Mvc 不会创建任何 Controller 和 Actions 和 Views。

因此,您必须手动执行要添加的控制器、操作和视图。

因此,现在您必须通过右键单击控制器并添加控制器来添加控制器。

添加控制器后。

您可以像这样右键单击操作并添加视图以添加视图:

在此处输入图像描述

好的....所以,您确实需要控制器、操作和视图。

现在您可能必须解决我之前告诉过您的控制器重复问题(如果有的话)。

快乐的编码...

于 2013-08-19T11:53:23.993 回答