我正在研究一個MVC3 Razor Web應用程序,它從Java內容管理系統獲取它的頁面裝飾。由於這裝潢是由每個頁面共享,我已經把在_Layout.cshtml文件中的CMS內容的檢索,但我不是,我實現的代碼完全滿意...Razor中的嵌入式代碼_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的某個輔助類中調用單個靜態方法。這將允許我將代碼移出視圖,並感覺像是最好的解決方案,但我仍然不是特別滿意。
有沒有人有任何其他的建議/意見?
這看起來像一個很好的解決方案,但我是否認爲這會發生在每一個行動?我不希望代碼執行任何部分視圖或json操作。 – DoctorMick 2012-03-27 14:09:26
我更新了代碼,因此它只能在正常操作中執行。 – 2012-03-27 15:02:53