您在何处或如何将配置设置(存储在数据库中)传递给您的视图?
假设用户可以在他的个人资料中设置不同的设置。这些选项应该在每个视图和部分视图中都可用。
一些选项:
你会把逻辑放在哪里获取信息? 我想避免在每个动作中调用一个方法(可能使用自定义基本控制器?)
我尝试过搜索'mvc options','global variables mvc','viewbag mvc','configuration mvc',......没有任何相关内容。我可能只是使用了错误的搜索关键字。
谢谢!
答案 0 :(得分:3)
- 全局静态变量 - 不良做法
不仅是不好的做法,而且它们在所有用户之间共享。在您的情况下,您需要每用户信息
- Viewbag?
依赖魔法弦的弱打字集合,糟糕的做法。我不喜欢它也不会使用它。
- 包含“实际”模型和“配置”模型的包装类。
是的,您可以为包含“设置”属性的所有视图使用通用基本视图模型。
你会把逻辑放在哪里获取信息?
一种可能性是拥有一个全局动作过滤器,在每个动作之后执行,检索传递给视图的模型,并且因为所有模型都将从公共基本视图模型派生,所以查询数据库并为settings属性赋值。
您还可以考虑另一种方法。您提到在每个视图中都需要此信息。您可以编写自定义HTML帮助程序,而不是使用公共基本视图模型,该帮助程序将从数据库中检索此信息并将其返回。当然,要避免多次往返数据库,您可以将检索到的用户设置缓存到HttpContext.Items
。