blu*_*nte 5 razor asp.net-mvc-3
有没有办法让我使用类似于Spark View Engine 中所谓的全局变量的功能,但是对于Razor.
它的全部意义在于能够在一个部分中为标题定义变量,然后能够在另一个部分中设置或更改该变量的值.
在Spark中,您将在类似于此类的部分中创建变量(出于示例目的,不完整的代码):
<html>
<head>
<global type='string' Title='"Site Name"'/>
<title>${Title}</title>
</head>
<body>
<div><use content="view"/></div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
然后你可以在不同的视图或部分或其他任何地方设置它:
<set Title='product.Name + " - " + Title'/>
Run Code Online (Sandbox Code Playgroud)
如果我采用错误的方法,我如何在Razor中做这样的事情或者只是解决类似的问题?
您可以ViewBag.Title在布局中使用:
<html>
<head>
<title>@ViewBag.Title - Site Name</title>
</head>
<body>
<div>
@RenderBody()
</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
然后在视图中定义此变量:
@model AppName.Models.Product
@{
ViewBag.Title = Model.Name;
}
Run Code Online (Sandbox Code Playgroud)
更新:
关于默认值的评论问题,您可以使用部分.
<html>
<head>
<title>
@if (IsSectionDefined("Title"))
{
RenderSection("Title")
}
else
{
<text>Some default title</text>
}
</title>
</head>
<body>
<div>
@RenderBody()
</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
然后在您的视图中,您可以重新定义该部分,如果您将:
@section Title {
<text>some redefined title here</text>
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14822 次 |
| 最近记录: |