我有一个表格,其中有三个复选框,例如:
@Html.CheckBox("Active", true)
@Html.CheckBox("Closed", false)
@Html.CheckBox("Finalized", false)
...并且控制器映射到这些默认值(可能这不是最好的方式)
public ActionResult TempView(bool Active = false, bool Closed = false, bool Finalized = false)
{ .... }
...然后是一个按钮,用于应用过滤器以引起一些AJAX魔法,并从表中选择某些属性位于过滤器的已检查值中。
除了一堆If Active is checked, WHERE Property = Active, Or If Closed is checked, WHERE Property = Closed [...]
在LINQ中是否有一个简单的实现方法可以使用多个布尔值来实现这一点?用户可以同时选择所有三个框(不只是一个或另一个)
答案 0 :(得分:0)
要解决这个问题,我创建了一个新类型SummaryFilterInfo
,如下所示:
public class SummaryFilterInfo
{
public List<State> States { get; set; }
public List<State> StateSelection { get; set; }
public SummaryFilterInfo()
{
var stateList = new StateList();
States = new List<State>();
StateSelection = stateList.GetAllStates();
}
}
然后我使用StateSelection
填充一个CheckBoxes数组,其名称如下:
SummaryFilterInfo_States[0]
我的Controller定义如下:
public ActionResult Index(SummaryFilterInfo summaryFilterInfo)
{
...
var filtered = all
.Where(e => summaryFilterInfo.States.Contains(e.State)).ToList()
}