使用@RenderPage时页面标题未更改

时间:2012-11-21 09:56:50

标签: asp.net razor

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

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

重复使用的代码(在PathToImplementation.cshtml内)使用ViewBag.Title来设置网页标题:

ViewBag.Title = somethingUseful;

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

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

2 个答案:

答案 0 :(得分:2)

在使用RenderPage时看起来ViewBag是重复的,并且副本会传递到RenderPage呈现的页面中,并且无法返回。所以我到目前为止找到的最干净的方法是将引用传递给调用RenderPage的页面。像这样:

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

//PathToPage.cshtml
@{  WebViewPage parentPage = PageData["ParentPage"];
    parentPage.ViewBag.Title = blahblahblhah;      
}

答案 1 :(得分:0)

如果您的标题位于PathToImplementation.cshtml内,并使用参数在PathToImplementation.cshtml内设置标题,则应使用PageData访问您的参数。 MSDN

这是example

实施例

   @PageData[index]; //Or 
   @PageData["title"];