2011-10-04 58 views
0

我正在构建管理控制台,所有控制器都依赖于客户的下拉选择。MVC3全局谓词过滤器

我想将此客户选择移至布局并将其保留在所有控制器中,以便您无需在任何地方选择它。

要做到这一点,最好的方法是什么?

在此先感谢。

回答

0
  1. 将下拉列表移至_layout.cshtml。
  2. 创建一个BaseView,所有视图将继承并为其提供一个属性,以存储Customer & Current Customer。
  3. 创建一个BaseController方法,该方法将填充BaseView实例。
  4. 将当前选定的客户存储在会话中。
  5. 创建一个全局过滤器并让它检查所有视图以查看它们是否继承BaseView。如果他们这样做,可以将它们转换为BaseView,然后填写属性。
  6. 在_layout中写一些代码,可以使用View来填充下拉列表。我在这里有点模糊,因为当我们做类似的事情时,我的同事实际上做了这个部分。
  7. 当用户更改下拉值时,您可以使用JSON调用将更新会话中当前客户的操作方法。
+0

谢谢。我将在明天实施这个计划,看看我能否实现这一目标。 – TheGwa

0

我会考虑写HTML帮手。你认为所有的鸟都可以飞,但有一天你会说有另一种特殊的情况,你不再需要这个下拉框。或者将其包含在局部视图中,并在需要的地方渲染该视图 - 这只是一行额外的代码。

例如

@section main_content{ 

    @{ Html.RenderPartial("MyPartialViewContainingDropDownBox"); } 

} 
+0

感谢您的回答,但是这不需要在每个操作中绑定下拉值? – TheGwa

+0

我需要时将SelectList包含在viewbag中。 – 2011-10-05 08:35:41