2014-09-30 33 views
1

我正在與Sitecore的MVC網站上工作。在特定的控制器中,我返回一個ViewModel的(部分)視圖,但該頁面僅顯示我返回的純色(部分)視圖。所以根本沒有造型。這聽起來很正確,但對我而言,問題在於我期望整個頁面包含通過Sitecore配置的所有其他部分視圖。sitecore MVC與viewmoldel返回視圖

我試圖避免使用ViewBags,因爲ViewModel在那裏,我認爲它是,看起來更好使用ViewModel

我的代碼是非常簡單的:

控制器返回視圖象下面這樣:

return PartialView("NameOfTheView", viewModel); 

,並在頁面我只是解析ViewModel項目,沒有什麼特別的存在。

我在Sitecore中使用佔位符。這是視圖應該顯示的地方。難道這裏的佔位符是問題嗎?

希望我的問題是清楚的,有人知道答案顯然;-)

+0

你怎麼稱呼你的控制器動作? – Anton 2014-09-30 14:55:17

回答

2

感謝所有的幫助傢伙!

檢查你的建議後,我發現我的答案在「相關」的問題只在少言,更好的描述中(Sitecore MVC form postback does not return a full layout)他的問題正是我的問題......

在我的情況,我的錯誤是使用@Html.Sitecore().FormHandler("Controller", "Action")而不是解決問題的@Html.Sitecore().FormHandler()

0

就是你控制器通過一些@ Html.ActionLink(...)返回?

如果是,那麼一切都是正確的。爲了避免這個問題,你可以嘗試使用@ Ajax.ActionLink(...)

0

如果視圖呈現沒有任何樣式,那麼這通常是因爲Sitecore無法解析請求的項目視圖。

確保您通過定義的路線訪問您的控制器操作,並且路徑的scItemPath屬性設置爲包含您的佈局詳細信息的sitecore項目。

2

我首先會驗證您是否使用「控制器渲染」,並將其插入您期望的佔位符中。這可以使用Presentation Details對話框完成。

接下來,沒有必要從您的控制器返回一個局部視圖。 ASP.NET MVC中的傳統局部視圖需要調用@RenderBody()和/或調用@ Html.Partial()的佈局。此功能由Sitecore的演示模型(使用佔位符)處理。相反,只需從你的控制器返回一個View(「/ path/to/view.cshtml」,viewModel),你應該全部設置。