将区域添加到mvc项目

时间:2013-08-19 11:20:49

标签: asp.net-mvc asp.net-mvc-routing

我有一个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并确保拼写正确。

     

请求的网址:/ LMS_WEB_APP / BEK / Home

     

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

2 个答案:

答案 0 :(得分:0)

我认为问题在于,区域和应用程序中都有同名控制器。就像您在普通应用程序中有 Home Controller 一样,也在 AREA 中 并且,它导致相同控制器的重复声明。

这样做的方法是,指定控制器的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
);
}

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

答案 1 :(得分:0)

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

enter image description here

Mvc不会创建任何控制器和操作和视图。

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

所以,现在你必须通过右键单击Controller和Add Controller来添加Controller。

添加控制器后。

您可以右键单击Action和Add View,如下所示添加View:

enter image description here

确定.... 因此,您需要控制器和操作和视图。

现在你可能必须解决我之前告诉过你的Controller Duplicacy,如果有的话。

快乐的结合......