Я работаю над веб-приложением MVC3 Razor, которое получает оформление страницы из системы управления контентом java.Так как это оформление доступно для каждой страницы, я поместил извлечение содержимого CMS в файл _Layout.cshtml, но я не совсем доволен реализованным кодом ...
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
@{
-- The first two lines are temporary and will be removed soon.
var identity = new GenericIdentity("", "", true);
var principal = new GenericPrincipal(identity, new string[] { });
var cmsInterface = MvcApplication.WindsorContainer.Resolve<ICMSInterface>();
cmsInterface.LoadContent(principal, 2);
}
@Html.Raw(cmsInterface.GetHeadSection())
</head>
<body>
@Html.Raw(cmsInterface.GetBodySection(0))
@RenderBody()
@Html.Raw(cmsInterface.GetBodySection(1))
</body>
</html>
Поскольку для файла _layout нет контроллера, я не вижу, куда еще я могу поместить код для поиска.Вот несколько вещей, которые я рассмотрел:
- Получение содержимого CMS по частям, поэтому мне не нужен вызов LoadContent.К сожалению, из-за компонента, который я должен использовать для извлечения контента CMS, это невозможно, это все или ничего.
- Используйте частичное представление, чтобы я мог использовать контроллер.Поскольку мне нужно поместить всю страницу в частичное, эта опция кажется немного смешной.
- Вызовите один статический метод для некоторого вспомогательного класса, который извлекает данные и добавляет три раздела в ViewBag.Это позволит мне убрать код из поля зрения и кажется лучшим решением, но я все еще не особенно доволен им.
У кого-нибудь есть другие предложения / комментарии?