我在向控制器发送对象列表时遇到问题。出于某种原因,我不断得到一个count = 0的列表。
这是我发送的模型:
public class DIYViewModel
{
public List<Item> Items { get; set; }
public List<CheckModel> Checklist { get; set; }
public int Page { get; set; }
public int TotalPages { get; set; }
public DIYViewModel(int page, List<Item> items,List<CheckModel> checklist)
{
int index = (page - 1) * 10;
this.Items = items.Skip(index).Take(10).ToList();
this.Page = page;
this.TotalPages = ((items.Count - 1) / 10) + 1;
this.Checklist = checklist;
}
}
这是CheckModel:
public class CheckModel
{
public int Id
{
get;
set;
}
public string Name
{
get;
set;
}
public bool Checked
{
get;
set;
}
}
这是获取DIYViewModel的视图:
@model Homeserve.Web.Models.DIYViewModel
@using Sitecore.Data.Items
@using Homeserve.Web.Models.Helpers
@using (Html.BeginForm("Testing", "DIY", new { app=Model.Checklist }))
{
foreach (CheckModel item in Model.Checklist)
{
@Html.HiddenFor(it => item.Id)
@Html.DisplayFor(it => item.Name)
@Html.CheckBoxFor(it => item.Checked)
}
<input id="Submit1" type="submit" value="submit" />
}
@{
foreach (Item newsItem in Model.Items)
{
<p> @Html.Sitecore().Field("Article Title", newsItem)</p>
<p> @Html.Sitecore().Field("Article Date", newsItem)</p>
<p> @Html.Sitecore().Field("Contents", newsItem)</p>
<p> @Html.Sitecore().Field("Article Image", newsItem)</p>
<p>social media stuff here</p>
}
}
@Html.DIYsPagination(Model.Page, Model.TotalPages)
我的控制器:
[HttpPost]
public ActionResult Testing(List<CheckModel> app)
{
return View();
}
列表应用程序始终是一个包含0个项目的列表,即使在视图中一切正常。
答案 0 :(得分:1)
您必须使用for
循环而不是foreach
,并使用index来保存数据。
@for (int i = 0; i < Model.Checklist.Count ;i++)
{
@Html.DisplayFor(it => it.Checklist[i].Name)
@Html.HiddenFor(it => it.Checklist[i].Id)
@Html.CheckBoxFor(it => it.Checklist[i].Checked)
}