2015-07-08 4 views
0

У меня есть решение с двумя веб-проектами MVC. Основной проект (HomeController) работает так, как ожидалось. Когда я нажимаю на действия, они находят взгляды и т. Д. Однако при попадании на второй контроллер проекта (PortalController) он никогда не находит вид, потому что я думаю, что он не смотрит во вторую папку представлений проектов.Несколько веб-проектов в одном решении

Как сделать MVC в правильной папке просмотра для проекта контроллера, на который я нажимаю?

В моем случае мне нужно, чтобы они были отдельными веб-проектами, потому что проект два - это общая система администрирования, которую я хочу использовать на нескольких сайтах, и я хочу просто скопировать ее или ссылаться на DLL.

Как я могу это достичь?

Вот скриншот моего макета решения

enter image description here

Здесь ошибка я получаю

enter image description here

Вот код на Портале/действие/Setup в контроллере , Все, что я делаю, изменение URL в/Portal/Setup, когда на главном/Index и он не появляется, чтобы найти соответствующий вид

[HttpGet] 
    public ActionResult Setup() 
    { 
     if (_portalService.GetModerators().Any()) 
      return RedirectToAction("Index"); 

     return View(); 
    } 
+2

Вы начинаете работу с обоими веб-проектами? – Jay

+0

Оба проекта находятся в одном решении, и когда я его запускаю, я считаю, что он находит второй проект, потому что изначально он жаловался на отсутствие строки подключения к базе данных (используемой в контроллере). Когда я решил это, теперь он не может найти представление. –

+1

Щелкните правой кнопкой мыши Решение в Обозревателе решений и выберите Свойства. Вы можете указать несколько проектов запуска в этом диалоговом окне. – Jay

ответ

1

Вы не можете провести два проекта MVC на одном уровне, в качестве альтернативы вы можете зарегистрировать Typhoeus.Portal.Web как область MVC и вызвать/[AreaName]/Portal/Setup вместо вызова/Portal/Настроить.

Чтобы сделать Typhoeus.Portal.Web областью MVC, вы можете добавить PortalAreasRegistration, наследуемый от AreasRegistration.

public class PortalAreasRegistration : AreaRegistration 
{ 
    public override string AreaName 
    { 
     get 
     { 
      return "Portal"; 
     } 
    } 

    public override void RegisterArea(AreaRegistrationContext context) 
    { 
     context.MapRoute(
      "Portal_default", 
      "Portal/{controller}/{action}/{id}", 
      new { controller = "Portal", action = "Index", id = UrlParameter.Optional } 
     ); 
    } 
} 

В Typhoeus.Personal.Web, добавьте Typhoeus.Portal.Web в качестве ссылки проекта, и зарегистрировать все области MVC с AreaRegistration.RegisterAllAreas() в Application_Start() методом 'Global.asax.cs'.

После этого вы можете посетить/Portal/Setup в этом случае/Portal/Portal/Step с первым Portal в качестве названия области, вы можете изменить это в PortalAreasRegistration.

2

Вы должны убедиться, что оба веб-проекты работают. Чтобы установить это как поведение по умолчанию при отладке, щелкните правой кнопкой мыши по вашему решению> Свойства. Выберите Startup Project слева.

Это даст вам возможность выбрать проект запуска или выбрать несколько. В вашем случае вы хотите выбрать несколько проектов запуска, каждый из ваших веб-сайтов.

enter image description here

+0

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

+0

, можете ли вы расширить свой вопрос с помощью более подробной информации? каковы названия страниц, как выглядит код? – DLeh

+0

Я добавил два скриншота к вопросу. При запуске изолированный проект «Портал» работает, просто не в сочетании с моим другим проектом в том же решении –

1

Я уверен, вы должны установить проект (ы) | Начало действия, чтобы указать корневой URL этого приложения, так что, когда вы нажмете клавишу F5 корень всегда загружается.

enter image description here

0

Право -Щелкните на ваших проектах -> свойство -> Web -> Проект URL вы можете найти свой второй URL проекта и использовать его, но после загрузки оба проектов пользователя: Dleh ответил эту часть

Смежные вопросы