MVC 5使用复选框删除ViewModel的列表元素

全部

我有一个带有列表的ViewModel,如何使用复选框删除列表元素?我在edit动作中生成了带有foreach的复选框,但是如何在带有HttpPost的ViewModel旁边获取复选框的值?

<dl>
     @foreach (var flower in Model.FlowerList)
     {
         <dt><input type="checkbox" id="@flower.Id" name="@flower.Id"/></dt>
         <dd>@flower.Name</dd>
     }
</dl>

放下这段代码,我只能获取viewmodel的值,而不能获取复选框的值,因为它们不是viewmodel的一部分。

[HttpPost]
[ValidateAntiForgeryToken]
public override ActionResult Edit(int id, BouquetViewModel viewModel)
{
    if (!ModelState.IsValid)
    {
        return View(viewModel);
    }
    DataService.Update(viewModel);
    return RedirectToAction("Details/" + id);
}
用户名

目前,你给每个复选框不同的name属性,所以假设你检查复选框与flower.Id=4flower.Id=8那么你的表单数据将包括...4=on&8=on...这是非常无用

一种选择是使用

@foreach (var flower in Model.FlowerList)
{
    <input type="checkbox" name="selectedflowers" value="@flower.Id" /> // id not necessary
    @flower.Name</dd>
}

然后向您的方法添加一个参数(假设flower.Id是typeof int

public override ActionResult Edit(int id, BouquetViewModel viewModel int[] SelectedFlowers)

并且该参数SelectedFlowers将包含所选Id的的集合

但是,由于使用视图模型,更好的方法是在视图模型中添加一个布尔属性,以便可以将复选框绑定到该模型。您尚未显示模型,但假设它们是

public class BouquetViewModel
{
  ....
  public List<FlowerViewModel> FlowerList { get; set; }
}

public class FlowerViewModel
{
  public int ID { get; set; }
  public string Name { get; set; }
  public bool IsSelected { get; set; } // add this
}

然后在视图中(请注意,您必须使用for循环而不是foreach循环)

for (int i = 0, i < Model.FlowerList.Count; i++)
{
  @Html.HiddenFor(m => m.FlowerList[i].ID)
  @Html.CheckBoxFor(m => m.FlowerList[i].IsSelected)
  @Html.LabelFor(m => m.FlowerList[i].IsSelected, Model.FlowerList[i].Name)
}

然后在POST方法中,您可以使用

IEnumerable<FlowerViewModel> selectedFlowers = viewModel.FlowerList.Where(f => f.IsSelected);

旁注:没有在POST方法代码中的任何位置指示您要对所选ID进行的操作,因此它不清楚您要进行的操作。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

确定在复选框列表MVC 5(editorfor)中选中了哪些复选框

来自分类Dev

MVC 5应用-使用图像而不是标签文本的复选框列表

来自分类Dev

选中复选框MVC5

来自分类Dev

在MVC 5视图的可滚动列表中显示大量复选框

来自分类Dev

MVC验证复选框

来自分类Dev

MVC Html。复选框

来自分类Dev

MVC 复选框值

来自分类Dev

如何使用Spring MVC使用复选框创建下拉列表?

来自分类Dev

MVC6-如果(选中复选框)则删除线

来自分类Dev

如何在MVC中保留复选框列表

来自分类Dev

MVC控制器获得“复选框列表”的值

来自分类Dev

MVC复选框列表绑定到模型

来自分类Dev

Spring MVC Thymeleaf绑定列表和复选框

来自分类Dev

在下拉列表(MVC)中显示复选框项目

来自分类Dev

如何在Asp.NET MVC中使用复选框创建MultiSelect下拉列表

来自分类Dev

在Razor中使用MVC4中的复选框从下拉列表中进行过滤

来自分类Dev

如何使用运行时生成的描述/值创建MVC4复选框列表

来自分类Dev

在 mvc 5 中检索复选框的值

来自分类Dev

在 mvc 5 中显示带有复选框的日历

来自分类Dev

如何使用Razor在MVC中显示复选框

来自分类Dev

使用MVC中的复选框查询选定的项目

来自分类Dev

对于列表中未在 POST 中检查的记录,Asp.Net MVC 5 复选框状态不会保持不变

来自分类Dev

Mvc复选框与模型Bool绑定

来自分类Dev

检查基于mvc模型的复选框?

来自分类Dev

使用Bootstrap和MVC5时没有随附标签时,复选框输入会严重对齐

来自分类Dev

复选框列表MVC编辑器用于模板回发

来自分类Dev

添加复选框列表后,提交表单不再起作用(.net mvc razor)

来自分类Dev

基于ASP.NET MVC中的复选框选择填充模型的嵌套列表对象

来自分类Dev

如何在下拉列表MVC视图中添加复选框

Related 相关文章

  1. 1

    确定在复选框列表MVC 5(editorfor)中选中了哪些复选框

  2. 2

    MVC 5应用-使用图像而不是标签文本的复选框列表

  3. 3

    选中复选框MVC5

  4. 4

    在MVC 5视图的可滚动列表中显示大量复选框

  5. 5

    MVC验证复选框

  6. 6

    MVC Html。复选框

  7. 7

    MVC 复选框值

  8. 8

    如何使用Spring MVC使用复选框创建下拉列表?

  9. 9

    MVC6-如果(选中复选框)则删除线

  10. 10

    如何在MVC中保留复选框列表

  11. 11

    MVC控制器获得“复选框列表”的值

  12. 12

    MVC复选框列表绑定到模型

  13. 13

    Spring MVC Thymeleaf绑定列表和复选框

  14. 14

    在下拉列表(MVC)中显示复选框项目

  15. 15

    如何在Asp.NET MVC中使用复选框创建MultiSelect下拉列表

  16. 16

    在Razor中使用MVC4中的复选框从下拉列表中进行过滤

  17. 17

    如何使用运行时生成的描述/值创建MVC4复选框列表

  18. 18

    在 mvc 5 中检索复选框的值

  19. 19

    在 mvc 5 中显示带有复选框的日历

  20. 20

    如何使用Razor在MVC中显示复选框

  21. 21

    使用MVC中的复选框查询选定的项目

  22. 22

    对于列表中未在 POST 中检查的记录,Asp.Net MVC 5 复选框状态不会保持不变

  23. 23

    Mvc复选框与模型Bool绑定

  24. 24

    检查基于mvc模型的复选框?

  25. 25

    使用Bootstrap和MVC5时没有随附标签时,复选框输入会严重对齐

  26. 26

    复选框列表MVC编辑器用于模板回发

  27. 27

    添加复选框列表后,提交表单不再起作用(.net mvc razor)

  28. 28

    基于ASP.NET MVC中的复选框选择填充模型的嵌套列表对象

  29. 29

    如何在下拉列表MVC视图中添加复选框

热门标签

归档