【问题标题】:Set a page title from a PartialView [duplicate]从 PartialView 设置页面标题 [重复]
【发布时间】:2012-07-16 18:08:11
【问题描述】:

可能重复:
Modifying MVC 3 ViewBag in a partial view does not persist to the _Layout.cshtml

我正在尝试从 PartialView 设置 pageTitle

这是我的代码:

部分视图模板:

@{
    ((WebViewPage)WebPageContext.Current.Page).ViewBag.Title = "Page title";
}

_Layout.cshtml:

<title> @ViewBag.Title</title>

如何做到这一点?

【问题讨论】:

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


【解决方案1】:

这不是部分人应该做的事情。修改父视图ViewBag 不是它的责任。除此之外,这是不可能的。 Quote from MSDN:

当一个局部视图被实例化时,它会得到它自己的副本 可用于父视图的 ViewDataDictionary 对象。这 因此,部分视图可以访问父视图的数据。 但是,如果局部视图更新数据,这些更新会影响 只有局部视图的 ViewData 对象。父视图的数据不是 改变了。

您总是可以使用 解决方法 shown here,但请不要这样做。部分不应该设置任何父状态。他们不应该对父母一无所知。

【讨论】:

  • 达林,我知道这很老了,而且你显然是个专家。但是,“ViewBag”的意义不就是成为“通用视图数据”的通用访问点吗?我理解“关注点分离”这一点,但我想不出部分中的 dynamic ViewBag 需要不知道其中的 dynamic ViewBag 的情况父视图。如果是强类型,是的。
  • 我有一个向导,每一步都是局部的。我想根据我正在执行的步骤更改 ViewBag 标题,而无需重新加载整个页面,当我正在执行的步骤 + 部分更改时
猜你喜欢
  • 2010-09-10
  • 2014-04-15
  • 1970-01-01
  • 2014-02-19
  • 1970-01-01
  • 1970-01-01
  • 2016-02-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多