MVC4站点选项

时间:2013-07-20 08:36:41

标签: .net asp.net-mvc-4

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

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

一些选项:

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

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

我尝试过搜索'mvc options','global variables mvc','viewbag mvc','configuration mvc',......没有任何相关内容。我可能只是使用了错误的搜索关键字。

谢谢!

1 个答案:

答案 0 :(得分:3)

  
      
  • 全局静态变量 - 不良做法
  •   

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

  
      
  • Viewbag?
  •   

依赖魔法弦的弱打字集合,糟糕的做法。我不喜欢它也不会使用它。

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

是的,您可以为包含“设置”属性的所有视图使用通用基本视图模型。

  

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

一种可能性是拥有一个全局动作过滤器,在每个动作之后执行,检索传递给视图的模型,并且因为所有模型都将从公共基本视图模型派生,所以查询数据库并为settings属性赋值。

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