剃刀模板变量范围

时间:2013-03-29 12:13:15

标签: asp.net-mvc-3 razor template-engine

我在View页面范围内的共享布局_Layout.cshtml中定义变量吗?

_Layout.cshtml varibles:

@{
    ViewBag.url = "http://www.website.com/site/";
}

Index.cshtml:

<a class="continue" href="@ViewBag.url/our-vision/">Continue</a>

输出:/our-vision/

2 个答案:

答案 0 :(得分:3)

您可以尝试回答这个问题:How do I set ViewBag properties on _ViewStart.cshtml?

设置(注意:代码用于_ViewStart,而不是用于_Layout)

@{
    PageData["message"] = "Hello";
}

获取

<h2>@PageData["message"]</h2>

OR

创建更有趣的解决方案:How to set ViewBag properties for all Views without using a base class for Controllers?

答案 1 :(得分:0)

说明:
ViewBag对于每个视图/布局都是不同的,剃刀首先渲染视图,然后是布局。

此问题的解决方案可能是在基本控制器orview或全局过滤器中设置公共常量,而不是布局。