.net – 在控制器中查看列表数据

前端之家收集整理的这篇文章主要介绍了.net – 在控制器中查看列表数据前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个看法,我在一个循环中呈现了部分视图.列表中有一个列表,部分视图与每个项目绑定.输入值后,我没有得到控制器列表的值.

这是我的看法

  1. <table id="resourceRequirement" class="table" width="100%" border="0">
  2. <thead>
  3. <tr style="background-color:#dfdfdf;">
  4. <td><div align="center">PRIORITY</div></td>
  5. <td><div align="center">SYSTEM RESOURCE / COMPONENT</div></td>
  6. <td><div align="center">RECOVERY TIME OBJECTIVE</div></td>
  7. </tr>
  8. </thead>
  9. <tbody>
  10. @foreach (var item in Model.ResourceRequirement)
  11. {
  12. @Html.Partial("~/Views/Shared/_ResourceRequirement.cshtml",item)
  13. }
  14. </tbody>
  15. </table>

这是我的部分看法:

  1. @model DisasterManagementSystem.Models.BusinessImpactAnalysis.ResourceRequirement
  2. <tr>
  3. <td>
  4. @Html.TextBoxFor(m => m.priority)<br />
  5. <div style="color:red;">
  6. @Html.ValidationMessageFor(model => model.priority)
  7. </div>
  8. </td>
  9. <td>
  10. @Html.TextBoxFor(m => m.systemresource)<br />
  11. <div style="color:red;">
  12. @Html.ValidationMessageFor(model => model.systemresource)
  13. </div>
  14. </td>
  15. <td>
  16. @Html.TextBoxFor(m => m.receveryTime)<br />
  17. <div style="color:red;">
  18. @Html.ValidationMessageFor(model => model.receveryTime)
  19. </div>
  20. </td>
  21. </tr>

这是我的清单:

  1. public List<ResourceRequirement> ResourceRequirement { get; set; }

班级在这里:

  1. public class ResourceRequirement
  2. {
  3. [required(ErrorMessage = "*")]
  4. public string priority { get; set; }
  5.  
  6. [required(ErrorMessage = "*")]
  7. public string systemresource { get; set; }
  8.  
  9. [required(ErrorMessage = "*")]
  10. public string receveryTime { get; set; }
  11. }

请告知我什么时候试图从列表中获取列表,我将该列表作为null.

解决方法

您使用foreach循环,部分生成不带索引器的重复名称属性(因此无法绑定到集合)和重复的id属性(无效的html).

而不是部分视图,请使用EditorTemplate.将您当前的部分视图重命名为ResourceRequirement.cshtml(即匹配类的名称),并将其放在/ Views / Shared / EditorTemplates文件夹(或/ Views / yourController / EditorTemplates文件夹中)

然后在主视图中,删除foreach循环并替换它

  1. <tbody>
  2. @Html.EditorFor(m => m.ResourceRequirement)
  3. </tbody>

EditorFor()方法接受IEnumerable< T>并为您的集合中的每个项目生成正确的html.如果您检查html,您将在窗体控件中看到正确的名称属性

  1. <input type="text" name="ResourceRequirement[0].priority" .... />
  2. <input type="text" name="ResourceRequirement[1].priority" .... />
  3. <input type="text" name="ResourceRequirement[2].priority" .... />

等等,当您提交表单时,它将绑定到您的模型(将其与您当前生成内容进行比较)

猜你在找的asp.Net相关文章