我正在努力處理看起來很簡單的概念。如果我的ViewBag中有一個值供我的_Layout.cshtml使用,我該如何以及在哪裏設置該值?用於處理ASP.NET MVC 3視圖中的常見數據的方法
這裏是最明顯的(對我)的選擇,因爲我現在所看到:
- 在每個控制器(未乾)
- 創建我自己的控制器基地控制器繼承並設置裏設置的值在基類
- 在Global.asax.cs中設置的值的值(感覺髒)
- 創建一個ActionFilter設置數據和全局寄存器的過濾器(也認爲是錯誤的)
- 設置在值_ViewStart.cshtml(感覺非常錯誤的,非常髒)
例如:
_Layout.cshtml
<!DOCTYPE html>
<html>
<head runat="server">
<title>@ViewBag.Title</title>
</head>
<body>
<div id="header">
<h1>Welcome @ViewBag.UserName</h2>
</div>
<div id="content">
@RenderBody()
</div>
</body>
</html>
如果每個控制器設置用戶名值,這不是可怕幹。如果我用CodeIgniter這樣的東西來解決這個問題,我只需要創建自己的基礎控制器來處理這些常見的項目,並開始我的快樂之旅。 ASP.NET MVC 3有更好的選擇嗎?
實際上,在這種特殊情況下 - 即時猜測「用戶名」實際上來自會話/表單身份驗證票證。所以你可能想要使用一個HTML幫助器,它使用FormsAuth代碼來抓取用戶名,然後渲染出一個MvcHtmlString - 只是一個想法... – RPM1984 2011-02-01 21:01:35
嗯......好點。也許@ ViewBag.UserName不是最好的例子。不過,我現在更關心的是更大的局面。 – Greg 2011-02-01 22:59:11