【问题标题】:Pass back multiple selected Checkbox Options using Razor in MVC在 MVC 中使用 Razor 传回多个选定的复选框选项
【发布时间】:2019-12-10 06:24:36
【问题描述】:

我正在使用 ASP.NET MVC 来填充一组复选框。这些复选框会根据用户在前一个视图中选择的内容而变化。我正在使用剃须刀。在我看来:

    @foreach (var skills in Model.SkillsAvailable)
    {
        <input name="pack" type="checkbox" value="@skills" /> @skills<br />
    }

    @Html.HiddenFor(m => m.SkillsSelected, new { @class = "hidden" })

我还有其他几个看起来几乎与此相同,但都是单选单选按钮。它通过 jQuery 在更改时采用选定的选项并填充 HiddenFor 来发挥作用。 HiddenFor 在提交时传递给控件。没有问题。

但对于我的复选框,我不确定如何将多个项目发回。如果此列表填充 10 个项目,而用户只能选择 2 个,我如何将它们添加到 List SkillsSelected?

我的第一直觉是,我可以使用另一个 foreach 循环以某种方式添加(例如选择的 foreach,添加到列表中)。但我不知道那是什么样子,除了使用布尔值之外,谷歌搜索并没有带来任何东西,如果列表每次都相同,这是有道理的,但如果列表有 5 到 30 个选项,则取决于之前的选择。

此时,我没有任何 jQuery 控制此部分,所以我没有它的代码。我的控制器很好地填充了复选框列表,但没有处理其他任何事情。

我的模型中唯一重要的属性就是这些,我可以在必要时更改它们。

    public List<string> SkillsAvailable { get; set; }
    public List<string> SkillsSelected { get; set; }

【问题讨论】:

    标签: jquery html asp.net-mvc razor checkbox


    【解决方案1】:

    视图中列表的技巧(剃刀)是使用 for 循环而不是 foreach。这样,您的 html 元素将被视为数组。这是您的案例的示例:

    模型的变化,将 SkillsSelected 属性列表作为布尔值的持有者

    public List<string> SkillsAvailable { get; set; }
    public List<bool> SkillsSelected { get; set; }
    

    然后,在视图上,使用 for 循环

    @using (Html.BeginForm())
    {
        @Html.AntiForgeryToken()
    
        for (int i = 0; i < Model.SkillsAvailable.Count; i++)
        {
            @Html.CheckBoxFor(m => Model.SkillsSelected[i]) @Model.SkillsAvailable[i] <br />
            @Html.HiddenFor(m => Model.SkillsAvailable[i])
        }
        <input type="submit" value="Submit" />
    }
    

    作为参考,这里有一个关于如何在控制器中传递和接收模型的示例

    public ActionResult Index()
    {
        var model = new Model1()
        {
            SkillsAvailable = new List<string>() { "Uno", "Dos", "Tres" }
        };
        return View(model);
    }
    
    [HttpPost]
    public ActionResult Index(Model1 model)
    {
        return View(model);
    }
    

    【讨论】:

      猜你喜欢
      • 2015-11-13
      • 2012-11-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-01
      • 2021-06-17
      • 2014-07-28
      相关资源
      最近更新 更多