从视图发送列表<something>到控制器

时间:2019-03-05 09:30:49

标签: c# asp.net-core model-view-controller .net-core asp.net-core-mvc

我有一个将要填写的表格,并且您可以在其中选中复选框以向该对象添加关键字。我有一个模型关键字和一个产品模型,产品有一个列表。在将其添加到数据库之前,需要填充它。这是我在视图中的代码。

        <form asp-action="Create">
        <div asp-validation-summary="ModelOnly" class="text-danger"></div>
        <div class="form-group">
            <label asp-for="Name" class="control-label"></label>
            <input asp-for="Name" class="form-control" />
            <span asp-validation-for="Name" class="text-danger"></span>
        </div>
        <div class="form-group">
            <label asp-for="Price" class="control-label"></label>
            <input asp-for="Price" class="form-control" />
            <span asp-validation-for="Price" class="text-danger"></span>
        </div>
        <div class="form-group">
            <label asp-for="Details" class="control-label"></label>
            <input asp-for="Details" class="form-control" />
            <span asp-validation-for="Details" class="text-danger"></span>
        </div>
        <div class="form-group">
            <label asp-for="ProductionTimeInDays" class="control-label">Production Time In Days</label>
            <input asp-for="ProductionTimeInDays" class="form-control" />
            <span asp-validation-for="ProductionTimeInDays" class="text-danger"></span>
        </div>
        <div class="form-group">
            <label class="control-label">Keywords</label>

            @foreach(Keyword word in keywordsList)
                {
                    <input type="checkbox" name="keywords" value="@word.Word" /> @word.Word<br/>
                }

            <span class="text-danger"></span>
        </div>
        <div class="form-group">
            <input type="submit" value="Create" class="btn btn-default" />
        </div>
    </form>

如何将信息发送到控制器?

2 个答案:

答案 0 :(得分:0)

假设您在控制器中具有:

public List<Keyword> kewordsList{ get; set; } = new List<Keyword>();

但是在您的模型类中必须包含关键字:

public bool Checked { get; set; } // the name is written by me you can choose any name you want

复选框必须是布尔类型,然后您可以在表单中使用它:

@for (var i = 0; i < Model.keywordsList.Count(); i++)
{
<input asp-for="keywordsList[i].Checked" />
}

答案 1 :(得分:-1)

我找到了解决方案。我没有发送对象,而是发送了ID,然后在控制器中接收了一个IDs数组。