【问题标题】:How do I display multiple pieces of user information on every page in ASP.NET MVC 2?如何在 ASP.NET MVC 2 的每个页面上显示多条用户信息?
【发布时间】:2011-06-05 00:42:38
【问题描述】:

我正在用 ASP.NET MVC 2 构建一个允许匿名用户和注册用户使用的站点。当用户登录时,我想在每个页面上显示与该配置文件相关的多条信息(即家乡、喜欢的颜色等)。从视图的角度来看,我理解使用母版页并创建部分以使其保持干燥。

但是,我遇到困难的地方是如何将此用户信息传递给每个页面的视图?我已经建立了数据库表之间的关系(我正在使用 EF),因此我可以通过 ViewData 为每个操作单独执行此操作,但这对于网站上的每个页面来说显然是荒谬的。

到目前为止,我的研究已经开始引导我创建一个基本控制器和基本视图模型,其他控制器和视图模型将从中继承。但我觉得我错过了一些明显的东西。有什么指点吗?

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-2 view viewmodel


    【解决方案1】:

    如果您的母版页使用 RenderAction 方法,它可以为页面的各个重复部分调用控制器操作,每个部分都可以执行数据访问并呈现部分视图。这允许您分离视图模型,同时仍然在所有页面上显示某些元素。

    这种方法对我们很有效。

    【讨论】:

      【解决方案2】:

      我们使用基本控制器将其存储在 ViewData 中。

      您也可以在控制器上使用 action 属性,而不是从基本控制器继承。

      【讨论】:

        【解决方案3】:

        您可以为模型创建一个基类,其中包含显示在每个页面上的数据。

        【讨论】:

        • 可能是个坏主意,除非您谈论的是基本 ViewModel。模型没有理由应该意识到展示需求并创建模型层次结构来满足 UI 需求。
        • 我显然是在谈论视图模型,没有任何借口可以将 UI 数据添加到您的实际模型类中。也就是说,StriplingWarrior 的回答非常好,我不知道你可以这样做,我以后会自己这样做。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-03-22
        • 1970-01-01
        相关资源
        最近更新 更多