MVC表面控制器和Umbraco电流节点

use*_*337 3 asp.net-mvc umbraco

我正在尝试在一个表面控制器中编写一个childaction函数,该控制器由宏调用以呈现PartialView.

我需要在此函数中访问我当前的页面属性,然后调整渲染的PartialView.

我从Jorge Lusar的ubootstrap代码中得到了这个,它在HttpPost ActionResult函数上工作正常:

var renderModel = (UmbracoRenderModel)ControllerContext.RouteData.DataTokens["umbraco"];
var currentPage = renderModel.CurrentNode.AsDynamic();
Run Code Online (Sandbox Code Playgroud)

问题是我在[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"];'
Run Code Online (Sandbox Code Playgroud)

DataTokens ["umbraco"]中的数据似乎在两个函数之间发生了变化.如果我在每一个上显示DataTokens ["umbraco"].ToString(),会发生以下情况:

[ChildActionOnly]上显示公共PartialViewResult Init() - >"Surface".

[HttpPort]上显示公共HandleSubmit(myModel模型) - >"Umbraco.Cms.Web.Model.UmbracoRenderModel".

感谢您的任何建议.

尼古拉斯.

Car*_*z T 5

我使用的是Umbraco 6.0.4,它很简单:

var currentNode = Umbraco.TypedContent(UmbracoContext.PageId);
Run Code Online (Sandbox Code Playgroud)

  • 需要从一个节点渲染一个surfaceController(我的意思是来自一个模板使用:`Html.Action("ActionName","MySurface")`或者使用它来发布它:`using(Html.BeginUmbracoForm("PostAction","MySurface") ))`) (5认同)