MVC 5中的复选框

时间:2014-02-04 20:37:58

标签: c# sql asp.net-mvc linq checkbox

我一直在尝试合并将在列表中显示的复选框 - 目标是能够选择多个复选框(或全选)并删除这些行。它需要一点点搜索,但我找到了一个很好的方法,但是我遇到了查询问题。

这是我的ViewModel

 public class RecipeWrapper
{
    public List<RecipeSelect> recipes { get; set; }
    public RecipeWrapper()
    {
        this.recipes = new List<RecipeSelect>();
    }

    public IEnumerable<int> getSelection()
    {
        List<int> ids = new List<int>();
        foreach (var n in recipes)
        {
            if (n.selection == true)
            {
                ids.Add(n.Recipe_ID);
            }
        }
        return ids;
    }
}

这是ViewModel RecipeSelect(在ViewModel上面实例化为List)

    public class RecipeSelect
{
    public bool selection { get; set; }
    public int Recipe_ID { get; set; }
    public string Name { get; set; }
    public string Difficulty { get; set; }
    public string Meal { get; set; }
    public Nullable<int> Cook_Time { get; set; }
    public string Directions { get; set; }
}

这是执行删除的控制器方法:

 [HttpPost]
    public ActionResult DeleteChecked(RecipeWrapper wrap)
    {
        var selectedIDs = wrap.getSelection();


        **var selectedRecipes = from m in db.Recipes
                              where selectedIDs.Contains(m.Recipe_ID)
                              select m;**



        foreach (var n in selectedRecipes)
        {
            db.Recipes.Remove(n);
        }
        db.SaveChanges();

            return RedirectToAction("Index");
    }

我调试了程序并确定我的EditorTemplate正确并且数据正确传递给控制器​​。但是,包含查询的粗体文本不会返回任何结果。如果我取出where子句,它将返回所有结果,后续代码将删除所有行。这让我觉得我的查询有问题。任何建议将不胜感激。

*编辑:我应该归功于它应该到位 - this link提供了一个很好的解释,即在MVC列表中加入复选框。强烈推荐,因为我努力寻找一个好方法几天。

0 个答案:

没有答案