绑定动态输入 [英] Bind dynamic inputs

查看:53
本文介绍了绑定动态输入的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个具有动态输入的表单,所以我不知道输入的数量和名称,正如您在下面的代码中看到的那样,它们来自数据库.

I have a form that has a dynamic inputs, so I don't know the count and names of the inputs, as you can see in the code below, they came from database.

 <div class="panel-body">
    <form asp-action="BrandFilter" method="get">
        <div class="form-group">
            @foreach (var brand in Model)
            {
                <div class="checkbox">
                    <label>
                        <input asp-for="@brand" type="checkbox" />@brand (10)
                    </label>
                </div>
            }
        </div>
        <button class="btn btn-default btn-sm btn-primary"><i class="fa fa-pencil"></i> Apply</button>
    </form>
</div>

问题是提交表单时如何绑定所有输入.

The question is how to bind all inputs when form is submitted.

public async Task<IActionResult> BrandFilter( /* ??? /*)

推荐答案

我创建了一个演示,您可以选择品牌并将所有复选框的值传递给控制器​​.

I create a demo that you could select the brands and pass all checkboxes' values to controller.

1.Brand.cs

1.Brand.cs

public class Brand
{
    [Key]
    public int ID { get; set; }
    public string Name { get; set; }
    public bool Selected { get; set; }
}

2.查看

@model List<Models.Brand>
<div class="col-md-4">
    <form asp-action="BrandFilter" method="post">
        <div class="form-group">

            @for (int i = 0; i < Model.Count(); i++)
            {
                <div class="checkbox">
                    @Html.HiddenFor(m => m[i].Name)
                    @Html.CheckBoxFor(m => m[i].Selected)
                    @Html.DisplayFor(m => m[i].Name)
                </div>
            }

        </div>

        <div class="form-group">
            <input type="submit" value="Submit" class="btn btn-default" />
        </div>
    </form>
</div>

3.controller

3.controller

 public async Task<IActionResult> BrandFilter(List<Brand> brands)

这篇关于绑定动态输入的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆