У меня есть сайт ASP.Net MVC, «изучающий мандарин онлайн». Он работает, и он отлично работает для меня. Теперь я хочу повторно использовать этот веб-сайт в качестве шаблона для нового веб-сайта, «изучая испанский онлайн». Оба веб-сайта будут находиться на совершенно разных доменах и на совершенно разных серверах.Структура двух разных сайтов, где внешние страницы разные, внутренние страницы одинаковы
Для моего «обучения мандарина онлайн» веб-сайт, 1/3 из веб-страниц являются внешние страницы, которые пользователь может просматривать без регистрации на сайте. Другие 2/3 веб-страниц внутренние страниц, что пользователь может видеть только ли они на сайте. Я хочу оба веб-сайта для использования разных внешних страниц (внешние страницы .aspx будут отличаться для обоих сайтов), но оба сайта используют один и тот же набор внутренних страниц (внутренние страницы .aspx будут одинаковыми для обоих сайтов).
Вопрос в ASP.Net MVC, как я могу структурировать проект/решение для обоих сайтов? Поскольку единственное различие для обоих веб-сайтов - это внешние страницы, самым простым решением, которое я могу придумать для обработки внешних страниц, является сохранение отображений для каждого представления в базе данных, извлечение этого сопоставления из базы данных на основе некоторой константы (например, WebsiteType) установить в web.config, а затем вернуть представление, основанное на сопоставлении. Например, в моем контроллере:
// WebsiteType is stored in web.config. It is set to LearnMandarin for the learn Manadarin
// online website and it is set to LearnSpanish for the learn Spanish online website
string websiteType = WebConfigurationManager.AppSettings["WebsiteType"];
// figure out which Homepage .aspx view to return, based on the websiteType
// GetView(...) will get the mapping from the database
string viewToReturn = GetView(websiteType, "HomepageView");
return View(viewToReturn);
Это чистое решение я могу думать так далеко и лучшая структура я могу думать. Я бы в итоге имел два разных файла .aspx в одном каталоге - одну .aspx страницу для изучения онлайн-сайта Mandarin, файл another.aspx для изучения испанского онлайн-сайта. Является ли это лучшим способом структурирования моего проекта или есть еще более чистый способ?
(Я использую Visual Studio 2010 и ASP.Net MVC версии 3.0.0.0)
Это действительно то, что * Область * особенность MVC имеет был создан для! – Haney
Итак, вы говорите, что мои внешние страницы должны находиться под областями, тогда как мои внутренние страницы, которые являются общими, не должны находиться под Areas? Я новичок в использовании областей, поэтому приношу свои извинения, если я не до скорости (сейчас я читаю учебники по этому вопросу). –
Вы можете создать атрибут для установки данных Area RequestContext на основе домена веб-сайта или какого-либо другого фактора, а затем разместить страницы, где вы считаете нужным. – Haney