У нас есть приложение MVC, которое внедряет наш контент в оболочку HTML, предоставляемую клиентом.
Существует несколько упаковщиков, таких как fund.html, share.html, factheet.html и home.html
Упаковщик хранится на нашем веб-сервере.Нам нужно загрузить оболочку в Site.Master и внедрить наш контент в область содержимого оболочки, а затем отобразить страницу.
По сути, мне нужен совет о том, как определить, какую оболочку использовать.
Сначала я думал, что мы можем сопоставить оболочку с контроллером.Итак, если мы рендерим View на FundController, мы можем использовать обертку Fund.html, а если это ShareController, мы можем использовать Share.html.В BaseController, который реализуется как FundController, так и ShareController, я получал имя контроллера и использовал его для загрузки файла, и все было хорошо.
Но, как изменились требования, стало очевидно, что это победило 'это не работает, потому что иногда нам нужен контроллер для рендеринга разных видов, которые используют разные обертки.Таким образом, FundController теперь может отображать Fund.html & Factsheet.html.Теперь контроллер не отображается напрямую в файл оболочки.
Затем я подумал, что мог бы использовать имя действия вместо имени контроллера, чтобы определить оболочку, которую я должен использовать .. например, public ViewResult Fund()
будетсоответствует Fund.html, а public ViewResult Factsheet()
будет соответствовать Facthseet.html, но это не идеально, потому что метод, который запускается в BaseController, будет запускать для всех методов действия, которые я выполняю, включая те, которые возвращают PartialViewsи другие результаты действий, для которых я не хочу загружать оболочки.Мне нужны только оболочки для ViewResults.
Итак, в этом случае мне было интересно, как лучше определить, какую оболочку использовать для какого ViewResult, который я выполняю.Одним из вариантов является использование «магической строки», которая всякий раз, когда данный метод действия выполняет его, устанавливает свойство в BaseController, которое можно использовать для определения используемой оболочки… но я не люблю магические строки.Я предпочел бы избежать хакерского подхода.
Я также думал об использовании фильтра действий, который мог бы выполнять работу по загрузке оболочки, связанной с любым методом действий, с которым связан фильтр.Но прежде чем сделать это, я хотел бы узнать мнение других людей, которым, возможно, приходилось сталкиваться с проблемой, подобной этой, прежде.Или если бы кто-нибудь мог посоветовать лучший подход?Какой лучший способ для меня это сделать?Спасибо.