我繼續讀了MVC方式從控制器到視圖通過視圖模型完成傳遞數據,但如何將數據傳遞到_Layout.cshtml
,如網頁標題,meta描述,文章作者,等等Asp.net MVC方式將數據傳遞給_layout.cshtml?
什麼是通過這種數據的MVC方式?我應該只使用ViewBag嗎?
我繼續讀了MVC方式從控制器到視圖通過視圖模型完成傳遞數據,但如何將數據傳遞到_Layout.cshtml
,如網頁標題,meta描述,文章作者,等等Asp.net MVC方式將數據傳遞給_layout.cshtml?
什麼是通過這種數據的MVC方式?我應該只使用ViewBag嗎?
你有幾種方法:
ViewBag和查看數據非常容易使用,但並不總是方便。
還有一個很大的優點 - 您可以在一個地方設置/閱讀並在另一個地方閱讀 - 例如,您可以將它們設置在主視圖中,並在_lauout.cshtml
中閱讀/顯示它們。
View組件在MVC核心(在我看來),它允許你創建UI部件中最有趣的新功能。
沒有爲ViewComponent多一點點的編碼(您需要創建控制器和視圖),但它的靈活的功能(我喜歡),並容易在你需要它的地方打電話,只是
@await Component.InvokeAsync("NameOfCOmponent")
。
注射不是我喜歡的,但有時usfull - 例如,如果你想顯示的用戶名,你可以只把下面的代碼,直接到你的佈局/視圖文件:
@using System.Security.Claims
@using Microsoft.AspNetCore.Identity
@inject UserManager<ApplicationUser> userManager
@{
var userInfo = ((await userManager?.GetUserAsync(User))?.xxx);
// where 'xxx' is any property of ApplicationUser model
}
那麼你可以在同一視圖中使用@userInfo
來顯示該信息。
更多信息:
的可能的複製[將數據傳遞給佈局通用於所有頁面(HTTP:/ /stackoverflow.com/questions/13225315/pass-data-to-layout-that-are-common-to-all-p年齡) – DavidG
您可以使用ViewBag作爲頁面標題,是的。您也可以創建一個模型屬性並將您的Layout.cshtml文件綁定到該視圖模型。你也可以使用會話數據。你在這裏有很多選擇 – mituw16
ViewBag是最簡單的。但是你也可以使用[Child Action](http://stackoverflow.com/questions/12530016/what-is-an-mvc-child-action)。 – Jasen