Ani*_*wal 10 .net asp.net-mvc-5
我有一个视图,我在循环中渲染局部视图.有一个列表,部分视图与列表中的每个项目绑定.输入值后,我没有在控制器上获取列表的值.
这是我的观点:
<table id="resourceRequirement" class="table" width="100%" border="0">
<thead>
<tr style="background-color:#dfdfdf;">
<td><div align="center">PRIORITY</div></td>
<td><div align="center">SYSTEM RESOURCE / COMPONENT</div></td>
<td><div align="center">RECOVERY TIME OBJECTIVE</div></td>
</tr>
</thead>
<tbody>
@foreach (var item in Model.ResourceRequirement)
{
@Html.Partial("~/Views/Shared/_ResourceRequirement.cshtml", item)
}
</tbody>
</table>
Run Code Online (Sandbox Code Playgroud)
这是我的部分观点:
@model DisasterManagementSystem.Models.BusinessImpactAnalysis.ResourceRequirement
<tr>
<td>
@Html.TextBoxFor(m => m.priority)<br />
<div style="color:red;">
@Html.ValidationMessageFor(model => model.priority)
</div>
</td>
<td>
@Html.TextBoxFor(m => m.systemresource)<br />
<div style="color:red;">
@Html.ValidationMessageFor(model => model.systemresource)
</div>
</td>
<td>
@Html.TextBoxFor(m => m.receveryTime)<br />
<div style="color:red;">
@Html.ValidationMessageFor(model => model.receveryTime)
</div>
</td>
</tr>
Run Code Online (Sandbox Code Playgroud)
这是我的清单:
public List<ResourceRequirement> ResourceRequirement { get; set; }
Run Code Online (Sandbox Code Playgroud)
课程在这里:
public class ResourceRequirement
{
[Required(ErrorMessage = "*")]
public string priority { get; set; }
[Required(ErrorMessage = "*")]
public string systemresource { get; set; }
[Required(ErrorMessage = "*")]
public string receveryTime { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
请告诉我什么时候我试图从模型上获取列表我的列表为null.
小智 7
您使用foreach循环而部分生成重复name属性而没有索引器(因此无法绑定到集合)和重复id属性(无效的html).
而不是局部视图,使用EditorTemplate.将当前的局部视图重命名为ResourceRequirement.cshtml(即匹配类的名称)并将其放在/Views/Shared/EditorTemplates文件夹(或/Views/yourController/EditorTemplates文件夹中)中
然后在主视图中,删除foreach循环并替换它
<tbody>
@Html.EditorFor(m => m.ResourceRequirement)
</tbody>
Run Code Online (Sandbox Code Playgroud)
该EditorFor()方法接受IEnumerable<T>并为集合中的每个项目生成正确的html.如果您检查html,现在您将在表单控件中看到正确的名称属性
<input type="text" name="ResourceRequirement[0].priority" .... />
<input type="text" name="ResourceRequirement[1].priority" .... />
<input type="text" name="ResourceRequirement[2].priority" .... />
Run Code Online (Sandbox Code Playgroud)
提交表单时将与您的模型绑定的其他内容(将其与您当前生成的内容进行比较)
| 归档时间: |
|
| 查看次数: |
250 次 |
| 最近记录: |