在asp.net mvc中从剃须刀部分设置ViewBag变量时,页面标题问题

问题描述

|| 考虑考虑休假声明
@section sideaction
{
  ...
  ViewBag.Title=Model.Title;
  ...
}
在主要布局中,我有这个
<head>
    <title> @ViewBag.Title</title>
....
...
</head>
..
...
<body>
..
 @RenderSection(\"sideaction\",required:false)
..
</body>
我没有从视图中获取标题,我知道视图将在布局之前处理,但是我认识到头部在渲染部分之前已处理,这会导致此问题。 还有一件事,ViewBag.Title = Model.Title只是一个例子,真正的Model是IEnumrable对象,我正在迭代并找到适当的标题。我可以在控制器中迭代以找到标题,但是视图中已经存在迭代。对于大集合,一次迭代更为有效。  有任何想法吗?     

解决方法

您不能在区域中设置
ViewBag
值。 用这个:
@{
    ViewBag.Title = Model.Title;
}
直接在视图中设置标题。     ,即使它不起作用,请注意代码必须像这样:
@section sideaction
{
    @{
       ViewBag.Title = Model.Title;
    }
}
但是正如其他人前面提到的,您不能在部分中以这种方式进行操作。 您应该将其直接放在视图中:
@{
    ViewBag.Title = Model.Title;
}
顺便说一句,如果您坚持要从某个部分内部更改页面标题,请使用javaScript / jQuery,例如:
@section sideaction
{
    <script type=\"text/javascript\">
        $(function () {
            document.title = \'@Model.Title\';
        });
    </script>
}
注意:请注意,它必须是\'@ Model.Title \'(在引号内)。