【问题标题】:Passing data from controller superclass to view?将数据从控制器超类传递到视图?
【发布时间】:2012-09-27 22:31:02
【问题描述】:

我正在编写一个 Asp.net MVC 应用程序(我的第一个 MVC 应用程序)。我需要将数据传递给 _Layout 视图以自定义页面上的页眉和页脚 - 哪些用户已登录,如果他们有任何通知等。_Layout 页面始终需要此信息,但子页面不需要。

我应该如何将这些数据传递给视图?我可以创建一个视图可以访问的LoggedInUser 属性吗,就像ModelViewBag 一样? LoggedInUser 可以由基本控制器类填充。

或者有没有更好的方法来实现这个?

【问题讨论】:

    标签: asp.net-mvc


    【解决方案1】:

    如果您使用 MembershipProvider 和/或 RoleProvider,您可以按照 webdeveloper 指出的方式获取当前用户 User.Identity.Name 的身份,前提是您想要显示其名称。

    您也可以输入您的_layout 来使用特定型号,但我不建议这样做。有关详细信息,请参阅此 questionanswer

    最后,您可以在控制器上填充 ViewBag 属性以获得您需要的用户信息。

    我想指出,您可以通过部分视图来实现这一点,并避免 _layout 在每个请求上键入和填充 ViewBag。

    【讨论】:

    • 谢谢,我最初决定从一个 ViewModel 继承所有内容并键入 _Layout,但我会改为查看部分视图。
    【解决方案2】:

    检测身份验证:

    User.Identity.IsAuthenticated
    

    然后您可以使用部分ASP.NET MVC 3: Layouts and Sections with Razor 或/和@Html.RenderAction (Html.RenderAction and Html.Action)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-21
      • 1970-01-01
      • 1970-01-01
      • 2017-11-30
      相关资源
      最近更新 更多