我想在一個表面控制器中編寫一個childaction函數,該函數被宏調用來渲染PartialView。MVC表面控制器和Umbraco當前節點
我需要在這個功能來訪問我的當前頁面屬性,然後調整渲染的PartialView。
我從喬治Lusar對ubootstrap代碼得到這個工作得很好的HttpPost的ActionResult功能:
var renderModel = (UmbracoRenderModel)ControllerContext.RouteData.DataTokens["umbraco"];
var currentPage = renderModel.CurrentNode.AsDynamic();
問題是我在[ChildActionOnly] PartialViewResult函數拋出這個錯誤:
Unable to cast object of type 'System.String' to type 'Umbraco.Cms.Web.Model.UmbracoRenderModel'.
on 'var renderModel = (UmbracoRenderModel)ControllerContext.RouteData.DataTokens["umbraco"];'
DataTokens [「umbraco」]中的數據似乎在兩個函數之間發生變化。 。 如果我diplay DataTokens [ 「一把umbraco」]的ToString()每一個,這裏是發生了什麼:
在[ChildActionOnly]公共PartialViewResult的init() - > 「表面」顯示。
On [HttpPort] public HandleSubmit(myModel model) - >「Umbraco.Cms.Web.Model.UmbracoRenderModel」顯示。
感謝這裏的任何建議。
Nicolas。
聽起來不錯。但我必須通過nodeID作爲宏參數?這意味着如果我想要當前頁面,在插入我的Richtext編輯器時,我仍然要在我的宏的ocntent選擇器參數中選擇當前節點?!沒有其他方式直接前進? – user1288337 2012-04-25 08:17:06
如果您需要當前currentPage,您可以使用控制器中的「this.CurrentPage」。這給了你當前的hive節點。 – dunston 2012-04-25 09:05:29
System.InvalidOperationException:在Umbraco.Cms.Web.Surface.SurfaceController.get_CurrentPage() – user1288337 2012-04-26 08:21:12