【问题标题】:Passing Title to WebForms Master Page from Razor Pages从 Razor 页面将标题传递给 WebForms 母版页
【发布时间】: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


    【解决方案1】:

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

    Session 似乎是唯一的总体数据容器。

    【讨论】:

      猜你喜欢
      • 2011-05-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多