Asp.net mvc 3 Razor视图引擎中的全局变量

Asp.net mvc 3 Razor视图引擎中的全局变量,asp.net-mvc-3,razor,Asp.net Mvc 3,Razor,是否有一种方法可以让我使用类似于Spark View引擎中所称的功能,但对于Razor 这一切的意义在于能够在一节中为标题定义一个变量,然后能够在以后的另一节中设置或更改该变量的值 在Spark中,您可以在类似这样的部分中创建变量(例如,不完整的代码): ${Title} 然后您可以将其设置在不同的视图或剖面或其他位置: <set Title='product.Name + " - " + Title'/> 如果我的方法不正确,我将如何在Razor中执行类似操作,或者仅仅解

是否有一种方法可以让我使用类似于Spark View引擎中所称的功能,但对于Razor

这一切的意义在于能够在一节中为标题定义一个变量,然后能够在以后的另一节中设置或更改该变量的值

在Spark中,您可以在类似这样的部分中创建变量(例如,不完整的代码):


${Title}
然后您可以将其设置在不同的视图或剖面或其他位置:

<set Title='product.Name + " - " + Title'/>


如果我的方法不正确,我将如何在Razor中执行类似操作,或者仅仅解决类似问题?

您可以在布局中使用
ViewBag.Title

<html>
  <head>
    <title>@ViewBag.Title - Site Name</title>
  </head>
  <body>
    <div>
        @RenderBody()
    </div>
  </body>
</html>

更新:

下面是关于默认值的注释问题,您可以使用以下部分

<html>
  <head>
    <title>
    @if (IsSectionDefined("Title"))
    {
        RenderSection("Title")
    }
    else 
    {
        <text>Some default title</text>
    }
    </title>
  </head>
  <body>
    <div>
        @RenderBody()
    </div>
  </body>
</html>

@如果(定义为“标题”)
{
渲染部分(“标题”)
}
其他的
{
一些默认标题
}
@RenderBody()
然后在视图中,如果愿意,可以重新定义截面:

@section Title {
    <text>some redefined title here</text>
}
@章节标题{
有些人在这里重新定义了标题
}

这似乎可行,但如果我在布局中设置title的值(比如我想要一个默认值),然后在视图中“更改”,它会保留第一个值集。现在,如果我不在布局上设置它,它将采用视图上设置的值。你知道怎么解决这个问题吗?谢谢@Lilitu88,请查看我关于
IsSectionDefined
RenderSection
方法的更新。在这种情况下不需要节。您可以在视图中使用以下表达式
@(ViewBag.Title??“默认标题”)
<html>
  <head>
    <title>
    @if (IsSectionDefined("Title"))
    {
        RenderSection("Title")
    }
    else 
    {
        <text>Some default title</text>
    }
    </title>
  </head>
  <body>
    <div>
        @RenderBody()
    </div>
  </body>
</html>
@section Title {
    <text>some redefined title here</text>
}