从CheckBox中检查MVQ中的LINQ值

时间:2013-04-23 20:42:37

标签: c# asp.net-mvc linq entity-framework

我有一个表格,其中有三个复选框,例如:

@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中是否有一个简单的实现方法可以使用多个布尔值来实现这一点?用户可以同时选择所有三个框(不只是一个或另一个)

1 个答案:

答案 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()
    }