.net mvc один раздел администратора несколько сайтов

Желаемый результат:

4 клиентских сайта в виде отдельных проектов 1 набор кода администратора, используемый всеми четырьмя сайтами

Моя текущая настройка - 4 проекта:

  • Ядро для моделей/сущностей

  • Данные для репозиториев

  • Контроллеры для, ну, контроллеры

  • Веб для просмотров

Теперь веб-проект содержит представления для сторон, обращенных к администратору и клиенту. Я хочу разделить это на административный проект и 4 «клиентских» проекта.

Я безуспешно искал в Google ссылку на веб-приложение из веб-приложения. Я прочитал об областях на сайте haacked.com. , но это кажется не совсем правильным. Я особенно не хочу встраивать представления в dll, так как это было бы проблемой при отладке/кодировании разметки. Очевидно, я не хочу иметь несколько копий кода.

Может ли кто-нибудь указать или предложить возможные способы сделать это? Я немного озадачен.


person Dave Archer    schedule 04.08.2009    source источник


Ответы (1)


Если причина разделения проекта на 4 веб-проекта заключается в том, что у клиентов разные взгляды, попробуйте следующее:

Создайте 1 веб-проект и используйте подпапку для разных представлений.

  • Views/Home/About.aspx (используется, если не найдена подходящая вложенная папка)
  • Представления/Главная/Customer1/About.aspx
  • Представления/Главная/Customer2/About.aspx

У вас может быть собственный механизм просмотра, который решает, какое представление он должен отображать. У каждой установки сети есть клиент, определенный в файле web.config.

public class MultiTennantWebFormViewEngine : WebFormViewEngine
{
  private static string[] LocalViewFormats = 

   new string[] {
       "~/Views/{1}/" +  ApplicationConfiguration.CustomerName + "/{0}.aspx",
    "~/Views/{1}/{0}.aspx",
    "~/Views/{1}/" + ApplicationConfiguration.CustomerName  +   "/{0}.ascx",
    "~/Views/{1}/{0}.ascx",
    "~/Views/Shared/{0}.aspx",
    "~/Views/Shared/{0}.ascx"
};

  public LocalizationWebFormViewEngine()
  {      
    base.ViewLocationFormats = LocalViewFormats;
     base.PartialViewLocationFormats = LocalViewFormats;
     base.MasterLocationFormats = new string[] {

          "~/Views/{1}/" +  ApplicationConfiguration.CustomerName  + "/{0}.master",
          "~/Views/{1}/{0}.master",
           "~/Views/Shared/"  +  ApplicationConfiguration.CustomerName  + "/{0}.master",
            "~/Views/Shared/{0}.master"
      };
}

}

person Mathias F    schedule 04.08.2009