1

我有一个包含三个复选框的表单,比如:

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

4

1 回答 1

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用来填充一个 CheckBox 数组,其名称如下:

SummaryFilterInfo_States[0]

我的控制器定义如下所示:

public ActionResult Index(SummaryFilterInfo summaryFilterInfo)
    {
        ...
        var filtered = all
                       .Where(e => summaryFilterInfo.States.Contains(e.State)).ToList()
    }
于 2013-04-29T18:54:47.480 回答