[英]How to parse parameters to __layout.cshtml?
如何解析一些參數到__layout.cshtml?
public class BaseInfo {
public string ShowMenu {get; set;}
public bool IsLoggedIn {get; set;}
public string CustomerName {get; set;}
.....
}
我想在__layout.cshtml中訪問這些字段,對我來說最好的方法是什么?
謝謝!
您可以將其添加為模型
@model NamespaceName.ModelsFolderName.BaseInfo
你也可以用
ViewBag
ViewBag.CustomerName = BaseInfoObject.CustomerName;
在其中存儲任何信息。
使用子動作。 創建自定義WebViewPage
類太瘋狂了,在布局上設置模型只是自找麻煩。 如果這樣做,那么每個視圖都必須使用該模型或該模型的子類。 最壞的情況是,您將至少有一個需要使用不同類型模型的視圖; 最好的情況是,整個業務領域是由用戶界面中需要的內容定義的(巨大的禁止)。
子動作就像部分動作一樣,您可以將它們放在布局或視圖中的任何位置,但是與部分動作不同,它們具有自己的獨立上下文,不會影響布局或視圖中發生的其他任何事情。
FooController.cs
public class FooController : Controller
{
...
[ChildActionOnly]
public ActionResult DisplayBaseInfo()
{
var baseInfo = new BaseInfo(); // pull from database or construct the instance however you like here
return PartialView("_DisplayBaseInfo", baseInfo);
}
}
_Layout.cshtml
@Html.Action("DisplayBaseInfo", "Foo")
將該呼叫放在您需要在此實例中顯示信息的任何地方。 放置子動作的控制器無關緊要; 只需將其放在對您的應用程序有意義的位置即可。 顯然,您需要創建局部視圖_DisplayBaseInfo.cshtml
,然后根據需要在其中渲染BaseInfo
實例。 在該視圖中,您可以將模型設置為BaseInfo
並進行強類型化,而不影響其他任何內容。
這樣, 零依賴關系。 一切都可以使用標准的MVC類,而無需修改頁面類或記住讓每個視圖模型都繼承自某個基類。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.