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值不是更好吗?