2010-01-12 77 views
1

我想從用戶會話中獲取一個值並將其顯示在site.master文件中。我該如何做到這一點,以便每個視圖頁面都有這個值?我是否必須在每個控制器操作中放置ViewData [「MyValue」]?在一個地方有沒有全球性的做法,所以我不必在每個控制器操作中都有相同的代碼?site.master中的會話數據

+0

請您談一下對會話對象,不得不提到的ViewData。爲什麼你不能在母版頁中調用'<%= Session [「MyValue」]%>'? – 2010-01-12 20:47:55

+0

我覺得我的大腦檢查了一分鐘...大聲笑 – Joe 2010-01-12 21:03:37

回答

0

<%=會議[ 「myvalue的」]%>在母版頁

3

你可以寫一個動作過濾器屬性,並用它裝點你的控制器:

public class CustomFilterAttribute : ActionFilterAttribute 
{ 
    public override void OnActionExecuted(ActionExecutedContext filterContext) 
    { 
     base.OnActionExecuted(filterContext); 
     filterContext.Controller.ViewData["MyValue"] = "some value"; 
    } 
} 

然後用這個屬性裝點控制器:

[CustomFilter] 
public class MyController: Controller 
{ 
    // actions 
} 

這將確保ViewData["MyValue"]將被設置在屬於這個控制器的所有動作。

+0

你有這樣的例子嗎? – Joe 2010-01-12 19:41:10

+2

除此之外,你可以擁有自己的'BaseController'和'CustomFilter'屬性,這是你所有的控制器繼承的。這意味着你只需要將它放在一個地方。 – Charlino 2010-01-12 19:57:41