簡體   English   中英

如何將參數解析到__layout.cshtml?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM