【发布时间】:2014-02-08 14:00:14
【问题描述】:
将对象中的列表从视图传递到控制器时遇到问题,列表始终为空。我该怎么做?
我的模特:
public class ImageModel
{
public int id { get; set; }
public string url { get; set; }
public bool delete { get; set; }
}
public class SchoolImages
{
public Nullable<int> schoolid { get; set; }
public IList<ImageModel> images;
}
观点:
@model SchoolAppManager.Models.SchoolImages
@using (Html.BeginForm("DeleteImages", "Images"))
{
@Html.HiddenFor(x => x.schoolid)
<table>
@for (int i = 0; i < Model.images.Count(); i += 4) {
<tr>
<td>
<img src="@Url.Content(Model.images[i].url)" width="50%" />
<br />
@Html.CheckBoxFor(x => x.images[i].delete)
@Html.HiddenFor(x => x.images[i].id)
</td>
<td>
@if (i + 1 < Model.images.Count())
{
<img src="@Url.Content(Model.images[i + 1].url)" width="50%" />
<br />
@Html.CheckBoxFor(x => x.images[i + 1].delete)
@Html.HiddenFor(x => x.images[i + 1].id)
}
</td>
<td>
@if (i + 2 < Model.images.Count())
{
<img src="@Url.Content(Model.images[i + 2].url)" width="50%" />
<br />
@Html.CheckBoxFor(x => x.images[i + 2].delete)
@Html.HiddenFor(x => x.images[i + 2].id)
}
</td>
<td>
@if (i + 3 < Model.images.Count())
{
<img src="@Url.Content(Model.images[i + 3].url)" width="50%" />
<br />
@Html.CheckBoxFor(x => x.images[i + 3].delete)
@Html.HiddenFor(x => x.images[i + 3].id)
}
</td>
</tr>
}
</table>
<input type="submit" value="delete" />
}
当我单击删除时,SchoolImages 被传递给控制器,SchoolImages.schoolId 在控制器中有值,但是,SchoolImages.images 为空。如何将SchoolImages.images 传递给控制器?
【问题讨论】:
-
我所知道的将列表传递给控制器的唯一方法是使用 jquery 构建它并通过 ajax 调用传递它。如果可能的话,传递一个 id 并在控制器上重新创建列表会容易得多
标签: asp.net-mvc list asp.net-mvc-4