C#MVC。如何将新项目用作单独的区域?

时间:2013-03-31 20:51:58

标签: c# asp.net-mvc entity-framework asp.net-mvc-areas

我是C#和MVC架构的新手。但我正在努力学习并想要站稳脚跟。我正在构建的应用程序需要一个前端和管理区域。两者都将拥有不同的界面,并被不同的人使用,所以我认为分离它的最佳方法是为每个人创建一个单独的项目,具有单独的控制器和视图,所有这些都共享相同的模型。

但是,我似乎无法将项目注册为单独的区域。 nopCommerce为他们的管理控制面板做了这个,我尝试了解代码并找不到差异。

在我的新“管理”项目中,我有一个区域注册文件,其中包含以下代码:

using System.Web.Mvc;

namespace cmsApp.Areas.Admin
{
public class AdminAreaRegistration : AreaRegistration
{
    public override string AreaName
    {
        get
        {
            return "Admin";
        }
    }

    public override void RegisterArea(AreaRegistrationContext context)
    {
        context.MapRoute(
            "Admin_default",
            "cmsAdmin/{controller}/{action}/{id}",
            new { controller = "Home", action = "Index", area = "Admin", id = UrlParameter.Optional },
            new[] { "cmsApp.cmsAdmin.Controllers" }
        );
    }
}
}

我很感激有关此问题的任何进一步信息。

我已经包含了我正在处理的源代码,如果有人关心查看完整代码:https://dl.dropbox.com/u/3901723/cmsApp.rar

干杯。

3 个答案:

答案 0 :(得分:2)

如果您受到约束并决定拥有单独的项目,那么您可以使用可移植区域,它们是MVC Contrib项目的一部分。

http://mvccontrib.codeplex.com/

但是,您不需要单独的项目只是为了拥有不同的UI。默认情况下,区域具有自己的视图和共享视图区域,并使用单独的母版页。所以你可以使用普通区域,仍然保持两个独立的外观和感觉,不同的代码,以及其他任何东西。

使用单独项目的唯一原因是:

  1. 你们每个人都有不同的人,他们希望将它们分开,以便于开发。
  2. 你想让一个便携式区域成为一种“插件”式的东西,听起来就像是不是这样。
  3. 您希望与主应用程序分开部署区域。

答案 1 :(得分:0)

您的命名空间看起来不对。

context.MapRoute(
    "Admin_default",
    "cmsAdmin/{controller}/{action}/{id}",
    new { controller = "Home", action = "Index", area = "Admin", id = UrlParameter.Optional },
    new[] { "cmsApp.Areas.Admin.Controllers" }
);

答案 2 :(得分:0)

也许你缺少global.asax中的RegisterAllAreas()?