gpt4 book ai didi

asp.net-mvc - Asp.net MVC 方式将数据传递给_layout.cshtml?

转载 作者:行者123 更新时间:2023-12-03 22:34:09 25 4
gpt4 key购买 nike

我一直读到 MVC方式传递数据从 Controller 到 View 是通过 ViewModel 完成的,但是将数据传递给 _Layout.cshtml 呢? ,如页面标题、元描述、文章作者等...

传递这种数据的 MVC 方式是什么?我应该只为他们使用 ViewBag 吗?

最佳答案

你有几种方法:

  • 查看包
  • 查看数据
  • View Components
  • 注入(inject)(以下示例)

  • 查看包查看数据 很容易使用,但并不总是很方便。

    有一个很大的优点 - 您可以在一个 View 位置设置/读取它们并在另一个位置读取它们 - 例如,您可以在主视图中设置它们并在 _lauout.cshtml 中读取/显示它们.

    查看组件 是 MVC Core 中最有趣的新功能(在我看来),它允许您创建 UI 小部件。

    ViewComponent 有更多的编码(你需要创建 Controller 和 View ),但它是灵活的功能(我喜欢它)并且很容易在你需要的地方调用它,只是
    @await Component.InvokeAsync("NameOfCOmponent") .

    注入(inject) 不是我最喜欢的,但有时是 usfull - 例如,如果您想要显示用户名,您可以将以下代码直接放入您的布局/ View 文件中:
    @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在同一 View 中显示该信息。

    更多信息:
  • Views Overview
  • Passing Data to Views
  • View Components
  • 关于asp.net-mvc - Asp.net MVC 方式将数据传递给_layout.cshtml?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41307385/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com