Подтвердить что ты не робот

Asp.net MVC - Можно ли загрузить представление из другой папки просмотра?

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

В принципе у меня есть эта структура папок

  • Контроллеры
    • EventsController.cs
    • SearchController.cs
  • Просмотров
    • События
      • Preview.aspx
    • Поиск

в основном рисует его так же, как здесь, при переполнении стека. Вы получаете предварительный просмотр кучки вопросов по ссылке вопросов, но также вы получаете идентичную отформатированную страницу, когда выполняете поиск в строке поиска. Мнения и режимы просмотра предположительно идентичны.

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

Итак, мой вопрос из двух частей ---

  • Возможно ли это, и если да, то как?
  • Это плохая практика?
4b9b3361

Ответ 1

Да, вы можете. Просто return View("~/Views/Events/Preview.aspx").

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

Лучшим подходом может быть создание "общего" представления или общего частичного представления. Мое предпочтение было бы общим частичным представлением, а затем в вашем общем виде визуализируйте функцию частичного просмотра, которую вы хотите.

Ответ 2

  • Это возможно.
  • Я не уверен, если вы используете строго типизированные представления. Но предположим, что это так, то для меня немного странно, что у вас есть поиск по событию и поиск с той же моделью просмотра. Возможно, разделить их на две разные модели просмотра, и представление будет лучше ИМХО. Более того, если вы укажете имя представления для загрузки в контроллер, это как-то считается связующим видом и контроллером, и это, конечно, не очень хорошая идея.