2013-03-29 162 views
3

我在共享佈局_Layout.cshtml中定義的變量在查看頁面的範圍內嗎?剃刀模板變量範圍

_Layout.cshtml可變因素:

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

Index.cshtml:

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

此輸出:/our-vision/

回答

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?

+0

這工作,但你知道他爲什麼說PageData很少用於MVC? – CharliePrynn

+0

@CharliePrynn'PageData'提供頁面數據的類似數組的訪問,這些數據在頁面,佈局頁面和部分頁面之間共享。您無法從控制器訪問它。通常開發人員使用'ViewData'將數據從控制器路徑到視圖。 – webdeveloper

0

說明:
ViewBag對於每個視圖/佈局和剃鬚刀渲染都是不同的首先是佈局,然後是佈局。

此問題的解決方案可能是在基本控制器或視圖或全局過濾器而不是佈局中設置常用常量。