【发布时间】:2012-02-18 04:16:16
【问题描述】:
我正在尝试将值传递给嵌套 WebForms 母版页中的 Page.Title、我的 Razor 布局页面 (_layout.cshtml) 或 razor 内的任何其他位置。
我尝试过将 Page.Title 与 this、Master、Parent 等结合使用。我试图从 Razor 内部访问 ViewState。我尝试使用 WebForms Master Page 中的 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 Master Page(不能修改,有标签)
嵌套的 WebForms 母版页(带代码隐藏)
MVC 母版页(无代码隐藏)
ASPX 页面(呈现 Razor)
MVC 布局
MVC 视图
任何想法如何从 Razor 获取标题到嵌套的 WebForms 母版页的代码隐藏?有没有我忽略的更好、更简单的方法来做到这一点?
【问题讨论】:
标签: asp.net asp.net-mvc asp.net-mvc-3 razor asp.net-4.0