Asp.net mvc 3 在asp.net mvc中从razor部分设置ViewBag变量时出现页面标题问题

Asp.net mvc 3 在asp.net mvc中从razor部分设置ViewBag变量时出现页面标题问题,asp.net-mvc-3,razor,title,Asp.net Mvc 3,Razor,Title,考虑一下在视图中的空闲声明 @section sideaction { ... ViewBag.Title=Model.Title; ... } 在主布局中我有这个 <head> <title> @ViewBag.Title</title> .... ... </head> .. ... <body> .. @RenderSection("sideaction",required:false) .. </b

考虑一下在视图中的空闲声明

@section sideaction
{
  ...
  ViewBag.Title=Model.Title;
  ...
}
在主布局中我有这个

<head>
    <title> @ViewBag.Title</title>
....
...
</head>
..
...
<body>
..
 @RenderSection("sideaction",required:false)
..
</body>

@视图包。标题
....
...
..
...
..
@RenderSection(“侧操作”,必填项:false)
..
我不是从视图中获取标题,我知道视图将在布局之前处理,但我认识到头部部分在渲染部分之前处理,这是导致此问题的原因。 还有一件事,ViewBag.Title=Model.Title只是一个例子,真正的模型是IEnumerable对象,我正在迭代并找到合适的标题。我可以在控制器中迭代以查找标题,但视图中已经有迭代。对于大型集合,一次迭代更有效。
有什么想法吗?

您不能在节中设置
ViewBag

使用以下命令:

@{
    ViewBag.Title = Model.Title;
}

直接在视图中设置标题。

您不能在节中设置
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>
}
@节侧操作
{
$(函数(){
document.title='@Model.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>
}
@节侧操作
{
$(函数(){
document.title='@Model.title';
});
}

注意:注意它必须是'@Model.Title'(内引号)

我正在从部分设置ViewBag值,这是可能的!若你们愿意,你们可以试试。我认为布局是从上到下逐行解析的,它首先看到头部部分,然后是条件部分。视图首先被处理,但当反射布局时它忽略了部分定义。我正在从部分设置ViewBag值,这是可能的!若你们愿意,你们可以试试。我认为布局是从上到下逐行解析的,它首先看到头部部分,然后是条件部分。视图首先被处理,但在反射布局时它忽略了部分定义。通过控制器传递ViewBag.Title值不是更好吗?通过控制器传递ViewBag.Title值不是更好吗?