1

您在哪里或如何将配置设置(存储在数据库中)传递给您的视图?

假设用户可以在他的个人资料中设置不同的设置。这些选项应该在每个视图和局部视图中都可用。

一些选项:

  • 全局静态变量 - 不好的做法
  • 查看包?
  • 包含“实际”模型和“配置”模型的包装类。

你会把获取信息的逻辑放在哪里?我想避免在每个动作中调用一个方法(也许使用自定义基本控制器?)

我试过搜索'mvc options','global variables mvc','viewbag mvc','configuration mvc',......没有相关的东西出现。我可能只是使用了错误的搜索关键字。

谢谢!

4

1 回答 1

3
  • 全局静态变量 - 不好的做法

这不仅是不好的做法,而且它们在所有用户之间共享。在您的情况下,您需要每个用户的信息

  • 查看包?

依赖魔术字符串的弱类型集合,不好的做法。我不喜欢它,也永远不会使用它。

  • 包含“实际”模型和“配置”模型的包装类。

是的,您可以为所有包含 Settings 属性的视图使用通用基础视图模型。

你会把获取信息的逻辑放在哪里?

一种可能性是有一个全局操作过滤器,它会在每个操作之后执行,检索传递给视图的模型,并且由于您的所有模型都将派生自一个通用的基本视图模型,因此查询数据库并为设置属性分配一个值。

您还可以考虑另一种方法。您提到您在每个视图中都需要此信息。您可以编写一个自定义的 HTML 帮助程序,而不是拥有一个通用的基本视图模型,该帮助程序将从数据库中检索此信息并返回它。当然,为了避免多次往返数据库,您可以将检索到的用户设置缓存到HttpContext.Items.

于 2013-07-20T08:48:23.740 回答