2015-06-16 41 views
4

我有一個調用其數據源子項的呈現。每個子項都在渲染字段中附加了一個渲染。 我打電話將參數傳遞給使用Sitecore中的ItemRendering進行呈現

@Html.Sitecore().ItemRendering(item) 

哪個有效。

但是我想傳遞一些參數給孩子的渲染,所以我嘗試了下面的代碼;

@Html.Sitecore().ItemRendering(item, new { Parameters = "active=1" }) 

但參數沒有得到傳遞給孩子渲染當我打電話@Html.Sitecore().CurrentRendering.Parameters["active"]

所以,我想@Html.Sitecore().ItemRendering(item, new { Active = 1 })。我在兒童渲染中再次調用它,但仍然沒有運氣。

有沒有辦法使用@Html.Sitecore().ItemRendering()

+0

嘗試在視圖中調用'Model.Rendering.Properties [「Active」]''。 – jammykam

+0

我是否必須將它作爲新的{Parameters =「active = 1」}或新的{Active = 1}在ItemRendering中傳遞? –

+0

它應該是'new {Active = 1}',但是我還沒有使用MVC中的參數進行靜態綁定,但 – jammykam

回答

1
var viewData = new ViewDataDictionary(); 
viewData["active"] = "1"; 
Html.Sitecore().ItemRendering(ItemToRender, viewData); 

在渲染的項目將參數傳遞給孩子,你可以訪問可視數據是這樣的:

(ViewData["active"] != null && int.Parse(ViewData["active"].ToString()) == 1) 
4

ItemRendering方法不似乎正確地處理屬性(或者正如期望的那樣)。

解決方法是使用@Html.Sitecore().Rendering()代替。您可以像下面的解決方法一樣使用該方法,如同ItemRendering方法。需要注意的是,正如你所說,你應該設置數據源項目的「渲染器」字段(或它的模板標準值),而不是「效果圖」字段:

@Html.Sitecore().Rendering(item["__Renderers"], new {Datasource = item.ID, Message = "Hello World"}) 

在孩子的渲染,使用Properties屬性,不是Parameters

@Html.Sitecore().CurrentRendering.Properties["Message"] 
+0

很棒,只是看到了您的博客文章。 –