MVC初学者 - 关于如何在整个站点中持久保存用户选择的建议

时间:2015-05-04 12:53:46

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

我有一个以每个团队数据为中心的应用程序。用户属于某个团队,如果他们登录,则只能看到该团队的数据。

但是,我现在拥有超级用户,他们基本上属于多个团队。这些用户应该能够登录系统,然后立即选择他们感兴趣的团队。从那时起,他们将基本上查看/创建针对所选团队的数据。他们还应该可以选择随时更改他们正在查看的团队。

我已经确定用户希望能够打开多个标签页并在每个标签页中查看不同的小组。

我努力找到使用.NET MVC实现这一目标的最佳方法,同时尽可能保持无状态和可测试性。

我一直在阅读有关持久数据的不同方法 - 会话状态和cookie似乎在MVC中得到了不好的代表。 TempData,ViewBag似乎只专注于为一个请求保留数据。

我不会认为这在应用程序中是一个不常见的要求 - 我已经错过了在MVC中处理这个问题的已知模式吗?

到目前为止,我尝试创建一个局部视图,我可以在每个页面上显示该视图,让用户看到他们正在查看该网站的哪个团队,并从那里进行更改。

感谢任何建议!

1 个答案:

答案 0 :(得分:1)

如果您想让超级用户查看多个团队数据,那么您希望在请求,查询字符串或看起来像一个宁静网址的内容中传递团队信息:

/blueteam/members

事实上,当有超级用户可以同时查看多个团队数据时,您可以通过有状态的方式跟踪此工作,因为您需要跟踪用户,团队和ui元素。

我说在每次请求中传递信息都是一种非常标准的方法。

无状态方法的棘手部分是使用团队信息装饰所有内部应用程序链接,而无需太多额外工作。相关链接可以是您的朋友。因此,指向团队的错误页面的链接可能只是简单地“错误”,在uri路径中获取更高的团队名称。如果您正在创建一个看起来像单页应用程序的东西,那么很容易将团队信息存储在客户端上。

如果您不希望团队成员查看其他团队成员的数据,您可以设置警卫功能,在呈现视图之前检查某些类别用户的团队成员资格。