【发布时间】:2012-03-27 22:56:53
【问题描述】:
我正在开发一个 MVC3 Razor Web 应用程序,该应用程序从 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。这将允许我将代码移出视图,感觉是最好的解决方案,但我仍然对它不是特别满意。
有没有人有其他建议/cmets?
【问题讨论】:
标签: asp.net-mvc razor