在Razor ASP MVC Core中编辑多个模型的bool属性
我有一个最新dotNet核心的MVC项目。该模型有一个bool属性,我想在索引视图中的模型列表中对其进行编辑 例如,如果我有这样一个模型:在Razor ASP MVC Core中编辑多个模型的bool属性,razor,asp.net-core-mvc,Razor,Asp.net Core Mvc,我有一个最新dotNet核心的MVC项目。该模型有一个bool属性,我想在索引视图中的模型列表中对其进行编辑 例如,如果我有这样一个模型: public class Model { public Guid ID {get; set;} public bool Enabled {get; set;} } @model UpdateEnabledViewModel <form asp-action="UpdateEnabled" method="post"> &l
public class Model
{
public Guid ID {get; set;}
public bool Enabled {get; set;}
}
@model UpdateEnabledViewModel
<form asp-action="UpdateEnabled" method="post">
<ul>
@foreach (var item in Model.AvailableItems)
{
<li><label><input type="checkbox" name="SelectedItems[]" value="@item.Id" /> @item.Id</label></li>
}
</ul>
<button type="submit">Submit</button>
</form>
我正在尝试创建一个列表,用户只能在其中更新Enabled属性
@model IEnumerable<Model>
@{
ViewData["Title"] = "Index";
}
<table class="table">
<thead>
<tr>
<th>
@Html.DisplayNameFor(model => model.Id)
</th>
<th>
@Html.DisplayNameFor(model => model.Enabled)
</th>
<th></th>
</tr>
</thead>
<tbody>
@foreach (var item in Model)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.Id)
</td>
<td>
@Html.EditorFor(modelItem => item.Enabled)
</td>
}
</tbody>
</table>
在用户更新所有复选框后,我可以使用如下按钮
<input type="submit" value="Save" class="btn btn-default" asp-action="UpdateEnabled" />
然后控制器中的一个方法应该获取列表并更新数据库
public async Task UpdateEnabled([Bind("Id,Enabled")] List<Model> models)
{
var allDbModels = context.Models.ToList();
foreach (Model modelFromView in models)
{
var dbModel = allDbModels.First(dbm => dbm.Id == modelFromView.Id);
dbModel.Enabled = modelFromView.Enabled;
}
await context.SaveChangesAsync();
}
我是MVC的新手,我不知道最好的方法是什么。在前面的代码中,从未调用控制器
我怎样才能做到这一点?在MVC中,最好的方法是什么?
谢谢 我建议您更改发送的数据。只需发送已启用ID的列表,而不是发送包含ID的所有模型对象的列表以及它们是否已启用。你可以这样做:
public class Model
{
public Guid ID {get; set;}
public bool Enabled {get; set;}
}
@model UpdateEnabledViewModel
<form asp-action="UpdateEnabled" method="post">
<ul>
@foreach (var item in Model.AvailableItems)
{
<li><label><input type="checkbox" name="SelectedItems[]" value="@item.Id" /> @item.Id</label></li>
}
</ul>
<button type="submit">Submit</button>
</form>
然后,这将只传输选定的ID,而不是所有带有布尔值的ID,无论它们是否被选中。因此,您在节省流量的同时,让一切变得更轻松。这还允许您在模型中包含更多属性,例如,在复选框旁边显示的标签。将@Model更改为List。使用a表示int i=0;i