2013-03-31 121 views
2

我是C#和MVC架構的新手。但我正在努力學習,並希望在右腳下車。我正在構建的應用程序需要一個前端和管理區域。兩者都有不同的接口並被不同的人使用,因此我認爲將它分開的最好方法是爲每個接口創建一個單獨的項目,使用單獨的控制器和視圖,全部共享相同的模型。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

乾杯。

+0

兩個不同的項目將不得不獨立部署。這可以部署到同一臺服務器,但我認爲將每個區域放在Web項目的單獨「文件夾」中會更容易。每個文件夾都可以具有不同的權限,因此只有一種類型的用戶可以訪問每個區域。 –

回答

2

如果你被綁定並確定有單獨的項目,那麼你可以使用Portable Areas,它是MVC Contrib項目的一部分。

http://mvccontrib.codeplex.com/

但是,你並不需要有單獨的項目只是有不同的UI的。默認情況下,區域具有自己的視圖和共享視圖區域,並使用單獨的母版頁。因此,您可以使用普通區域,並仍保持兩種不同的外觀和感覺,以及不同的代碼和其他任何內容。

使用單獨的項目,唯一的原因是:

  1. 你有不同的人對每個工作,並希望保持他們在物理上分離,便於開發。
  2. 你想讓一個便攜式的區域成爲一種「插件式」的東西,這聽起來對我來說並非如此。
  3. 您想要與主應用程序分開部署區域。
+0

感謝您的澄清..我會嘗試這條路線。 –

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

我不認爲這個名字空間是不正確的。我不是試圖從Areas文件夾訪問區域,而是從另一個項目 –

0

也許你錯過了RegisterAllAreas()在你的global.asax?

+0

AreaRegistration.RegisterAllAreas();是我的Application_Start()函數的第一行。 –