我有一个表格将被填写,并且有一个部分可以在复选框中签入以向对象添加关键字。我有一个模型关键字和一个产品模型,产品有一个列表。在将其添加到数据库之前,我需要填写它。这是我在View中的代码。
<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>
如何将信息发送给控制器?
假设你在控制器中有:
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" />
}
我找到了解决方案。我改为发送ID而不是发送对象,而在控制器中我会收到一个ID数组。