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

问题描述 投票:2回答:4

我是C#和MVC架构的新手。但是我正在尝试学习,并希望以正确的方式站起来。我正在构建的应用程序将需要一个前端和管理区域。两者都有各自不同的接口,并由不同的人使用,所以我认为分离它的最佳方法是为每个视图创建一个单独的项目,并使用单独的控制器和视图,并共享同一模型。

但是,我似乎无法将项目注册为单独的区域。 nopCommerce在其管理员控制面板上执行了此操作,而我尝试遍历代码,但找不到差异。

在我的新“ admin”项目中,我有一个具有以下代码的区域注册文件:

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

干杯。

c# asp.net-mvc entity-framework asp.net-mvc-areas
4个回答
2
投票

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

http://mvccontrib.codeplex.com/

但是,您不需要具有单独的UI即可拥有单独的项目。默认情况下,区域具有自己的视图和共享视图区域,并使用单独的母版页。因此,您可以使用常规区域,并且仍然保持两种不同的外观和感觉,不同的代码以及其他任何内容。

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

  1. 您在每个人上都有不同的工作人员,并且希望他们在身体上分开,以便于开发。
  2. 您想让可移动区域成为一种“插入式”事物,对我来说听起来好像不是这种情况。
  3. 您要与主应用程序分开部署区域。

0
投票

您的名称空间看起来不正确。

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

0
投票

也许您在global.asax中缺少RegisterAllAreas()?


0
投票

请看下面的链接,它说明了如何在Asp.Net Mvc中将新区域创建为单独的项目

https://ideafromtheweb.com/how-to/create-new-areas-separate-project-asp-net-mvc/

© www.soinside.com 2019 - 2024. All rights reserved.