MVC3全局谓词过滤器

时间:2011-10-04 12:52:52

标签: asp.net-mvc-3 data-binding filter predicate

我正在构建一个管理控制台,所有控制器都依赖于客户的下拉选择。

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

这样做的最佳方式是什么?

提前致谢。

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

我会考虑编写HTML帮助器。你假设所有的鸟都可以飞,但是有一天你说有另一种特殊情况你不再需要这个下拉框。或者将它包含在局部视图中并将视图渲染到您需要的位置 - 它只是一行额外的代码。

E.g。

@section main_content{

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

}