asp.net - 无法将 CSHTML 中的视图模型列表传递给控制器
问题描述
我有一个视图模型、视图和控制器,可以很好地显示数据,但我无法将表单中输入的数据保存到控制器。我尝试过为视图模型使用列表、数组和列表。
这是我的视图模型:
public class AssignedHostData
{
public int HostID { get; set; }
public string HostName { get; set; }
public bool Assigned { get; set; }
[DisplayName("Additional Details")]
[DataType(DataType.MultilineText)]
public string AddDetails { get; set; }
}
这是我的视图中显示数据的部分:
<table class="table">
<tr>
@{
int cnth = 0;
List<Support_Web.Models.ViewModels.AssignedHostData> hosts = ViewBag.Hosts;
foreach (var host in hosts)
{
if (cnth++ % 1 == 0)
{
@:</tr><tr>
}
@:<td>
<input type="checkbox"
name="selectedHosts[@cnth].HostID"
id="selectedHosts_[@cnth]_HostID"
value="@host.HostID"
@(Html.Raw(host.Assigned ? "checked=\"checked\"" : "")) />
@host.HostID @: @host.HostName
@:</td>
@:<td>
<input type="text" name="selectedHosts[@cnth].AddDetails" id="selectedHosts_[@cnth]_AddDetails" value="@host.AddDetails" />
@:</td>
}
@:</tr>
}
</table>
这是我的编辑控制器的参数。该selectedProducts
列表每次返回一个空列表:
public async Task<IActionResult> Edit(int? id, string[] selectedProducts, List<HostCheckListItem> selectedHosts)
解决方案
我的视图需要这样格式化:
@{
int cnth = 0;
List<Support_Web.Models.ViewModels.AssignedHostData> hosts = ViewBag.Hosts;
for (int i = 0; i < hosts.Count; i++)
{
<tr>
<td>
<input type="checkbox"
name="selectedHosts[@i].HostID"
value="@hosts[@i].HostID"
@(Html.Raw(hosts[@i].Assigned ? "checked=\"checked\"" : "")) />
@hosts[@i].HostName
</td>
<td>
<input type="text" name="selectedHosts[@i].AddDetails" value="@hosts[@i].AddDetails" />
</td>
</tr>}
}
推荐阅读
- python - 如果设置一个最小超时值会发生什么?
- python - Python - cx_Oracle - 返回 ORA-01847:月份中的某天必须介于 1 和该月的最后一天之间
- html - 从子文件夹链接 CSS 文件
- java - 将地址栏中的 JWT 令牌从应用程序 A 发送到应用程序 B
- css - 如何在内容后面显示背景图像?
- azure - Azure kubernetes - 它可以跨多个区域分布吗?
- html - HTML 缓存字体文件
- swift - 使用 struct 显示图像一段时间
- c - 当通过双重引用传递给集合函数时,如何访问 C 中不透明数据结构的成员?
- python - IndentationError:意外缩进 Python 3 错误