.net MVC один админ раздел несколько сайтов - PullRequest
0 голосов
/ 04 августа 2009

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

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

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

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

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

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

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

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

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

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

1 Ответ

1 голос
/ 04 августа 2009

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

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

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

У вас может быть собственный viewengine, который решает, какой вид он должен визуализировать. У каждой установки в Интернете есть клиент, определенный в 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"
      };
}

}

...