我正在尝试将一个值传递给嵌套的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母版页的代码隐藏?有没有更好,更简单的方法来做到这一点我忽略了?
答案 0 :(得分:0)
我能够使用Session变量成功地将标题从Controller传递到嵌套的WebForms母版页。然后,我可以在SaveStateComplete之后成功地从嵌套的WebForms母版页更改标题。
会话似乎是唯一的主要数据容器。