2

我正在使用@RenderPage在两个相似页面中重用代码。两页中的每一页仅包含@RenderPage

@RenderPage("~/Views/PathToImplementation.cshtml", new { paramsListHere })

重用的代码(内部PathToImplementation.cshtml)用于ViewBag.Title设置页面标题:

ViewBag.Title = somethingUseful;

问题是ViewBag.Title从重用代码内部更改对原始页面没有影响 - 没有任何反应。

如何从调用的代码更改页面标题@RenderPage

4

2 回答 2

2

看起来当RenderPage被使用时ViewBag被复制并且副本被传递到RenderPage呈现的页面中并且没有回头路。所以到目前为止我发现的最干净的方法是将引用传递给调用RenderPage. 像这样的东西:

//calling page
@RenderPage( PathToPage.cshtml, new { ParentPage = this } )

//PathToPage.cshtml
@{  WebViewPage parentPage = PageData["ParentPage"];
    parentPage.ViewBag.Title = blahblahblhah;      
}
于 2012-11-22T13:22:46.463 回答
0

如果您的标题在内部PathToImplementation.cshtml并使用参数在内部设置标题PathToImplementation.cshtml,则应使用 访问您的参数PageData微软_

这是一个例子

前任;

   @PageData[index]; //Or 
   @PageData["title"];
于 2012-11-21T10:41:32.070 回答