我有我的_Layout.cshtml
文件,它使用ViewBag
模型來渲染一些動態內容。在佈局頁面中使用ViewBag
我明白ViewBag
可以在控制器中填充並在視圖和/或佈局頁面中訪問。
我的問題是,如果我的佈局頁面正在使用@ViewBag.SiteName
,我想避免在返回視圖之前在每個控制器中設置此變量。有沒有辦法在全球範圍內設置這個變量?或者我應該如何將這些數據傳遞給佈局頁面?
我有我的_Layout.cshtml
文件,它使用ViewBag
模型來渲染一些動態內容。在佈局頁面中使用ViewBag
我明白ViewBag
可以在控制器中填充並在視圖和/或佈局頁面中訪問。
我的問題是,如果我的佈局頁面正在使用@ViewBag.SiteName
,我想避免在返回視圖之前在每個控制器中設置此變量。有沒有辦法在全球範圍內設置這個變量?或者我應該如何將這些數據傳遞給佈局頁面?
如果您在ViewBag中設置了任何東西 - 發生這種情況之後佈局已渲染 - 您錯過了船。
正如其他人所說,你可以創建一個 「助手」 控制器:
public class LayoutController : BaseController
{
[ChildActionOnly]
public ActionResult SiteName()
{
return new ContentResult {Content = "Site name goes here"};
}
}
然後,在你的佈局:
@{Html.Action("SiteName", "Layout")}
不能正常工作........ – 2016-04-15 11:48:45
什麼是不工作@Vlado – Alex 2016-04-15 11:52:13
我打電話@ {Html.Action(「SiteName」,「Layout」)}在JavaScript和結果是空字符串。例。 var a =''@ {Html.Action(「SiteName」,「Layout」)}「,一個是空字符串,當調試方法返回字符串相反,但在視圖內是空的 – 2016-04-15 11:53:41
請看看這有助於! http://forums.asp.net/t/1820819.aspx?Global+ViewBag+Property – CodeMad 2014-10-06 21:09:15
http://stackoverflow.com/questions/5453327/how-to-set-viewbag-properties-for-all-views-沒有使用的基礎類爲控制 – CodeMad 2014-10-06 21:09:41
你可以創建一個動作過濾器設置屬性,然後在'global.asax'中全局應用過濾器 – 2014-10-06 21:10:34