在我正在处理的应用程序中,管理员可以在下拉列表中选择要使用的客户。事情是,管理员可以查看大量视图,每次他们必须再次选择客户。在webforms中,这很容易......将它存储在Session变量中,并在另一个页面加载时重置它。
MVC并非如此。我似乎陷入了将此值传递给控制器视图的位置。我们将值存储在Session变量中,我们使用这样的基本控制器访问它:
MyController.CurrentUser.CurrentCustomerId
我无法解决的问题是我如何将此值传递给局部视图。客户选择器工具处于局部视图中,该视图被添加到需要它的页面中。
我想过使用ViewBag,但这意味着在我的控制器中需要此值的每个操作中,我都必须添加:
ViewBag.CurrentCustomerId = CurrentUser.CurrentCustomerId;
即便如此,我也不确定ViewBag数据是否传递到局部视图。我觉得是这样的。
似乎应该有更有效的方法来执行此操作并仍然遵守MVC规则?
答案 0 :(得分:0)
@Andre Calil为在控制器和视图之间传递用户信息提供了一个非常好的解决方案,我最终使用了这种方法。
通过以下链接查看他的回答:Razor MVC, where to put global variables that's accessible across master page, partiview and view?