从Razor Pages将标题传递给WebForms母版页

时间:2012-01-24 22:06:09

标签: asp.net asp.net-mvc asp.net-mvc-3 razor asp.net-4.0

我正在尝试将一个值传递给嵌套的WebForms母版页中的Page.Title,来自我的Razor布局页面(_layout.cshtml)或剃刀内的任何其他位置。

我尝试过使用Page.Title的各种组合,Master,Parent等。我试图从Razor里面访问ViewState。我试过使用WebForms母版页中的ViewBag。到目前为止最成功的尝试是使用Session变量,遗憾的是,在下一页加载之前不会更新标题(更新的标题总是为前一页而不是当前页设置)。

以这种方式设置标题的原因是双重的。第一部分是我无法使用其中的标记更改根WebForms母版页。第二个是使用JavaScript / jQuery更改它可能会导致SEO(搜索引擎优化)问题。如果有解决SEO问题的方法,我可以通过使用jQuery避免所有这些。

我通常使用以下文章来完成在WebForms中嵌入Razor: http://www.eworldui.net/blog/post/2011/01/07/Using-Razor-Pages-with-WebForms-Master-Pages.aspx

我发现可以更改标题的唯一方法是从“嵌套WebForms母版页”的代码隐藏中设置Page.Title。不幸的是,我似乎没有从这里访问Razor。我从Page_Load和Page_PreRender尝试过这个。我试图为PreRenderComplete实现一个方法,没有任何成功。我是否有可能从ASP.Net页面生命周期的不同点成功地完成这项工作?

我的页面层次结构如下所示:

root WebForms母版页(无法修改,有标记)

嵌套的WebForms母版页(带代码隐藏)

MVC母版页(没有代码隐藏)

ASPX页面(渲染Razor)

MVC布局

MVC视图

如何从Razor获取标题到嵌套的WebForms母版页的代码隐藏?有没有更好,更简单的方法来做到这一点我忽略了?

1 个答案:

答案 0 :(得分:0)

我能够使用Session变量成功地将标题从Controller传递到嵌套的WebForms母版页。然后,我可以在SaveStateComplete之后成功地从嵌套的WebForms母版页更改标题。

会话似乎是唯一的主要数据容器。