我从引导程序中填充了可折叠的手风琴,并且每个可折叠块中都有一个表格。在GET请求中,我获得了与客户相关的所有视图模型,然后按月对它们进行分组,这使List成为IEnumerable>,然后将其发送到视图并循环,以便每个手风琴块为“ Januari”及其包含数据的表,以及等等。
因此,总结视图:我在Model中循环分组,在手风琴“键”中添加每个分组的日期,以使手风琴块具有唯一性,然后在手风琴块中添加一个表,其中包含所有行群组。表中的每一行只有一个输入,即一个复选框。
问题:提交时我什么也没收到。空列表...这是GET / POST和视图。
动作..
[HttpGet]
public IActionResult CheckOffPriceListsAdjustments(int projectId)
{
//Get all the priceListsAdjustments that are unchecked
var priceListsAdjustments = _priceListsAdjustmentsHandler.GetPriceListsAdjustmentsByProjectId(projectId)
.Where(x => x.Checked.Equals(false)).ToList();
if (priceListsAdjustments.Any())
{
// Transform them to checkOffViewModels.
var checkOffViewModels = _customerHandler.GetPriceListsAdjustmentsForCheckOff(priceListsAdjustments);
var proj = _projectService.GetProjectById(projectId).ProjectName;
ViewBag.ProjectName = proj.Contains(";") ? proj.Substring(proj.IndexOf(';') + 1) : proj;
var grouped = checkOffViewModels.GroupBy(x => x.Date).Select(grp => grp.ToList());
return View(grouped);
}
return View();
}
[HttpPost]
public IActionResult CheckOffPriceListsAdjustments(IEnumerable<List<CheckOffViewModel>> grouped)
{
// TODO : Update rows in DB, save changes.
return View();
}
查看:
@model IEnumerable<List<Blabla.Models.ViewModels.CheckOffViewModel>>
@using Blabla.Extensions
<h2>@ViewBag.ProjectName</h2>
<p id="checkOff-paragraph">blalblalblalblala....</p>
<div id="accordion">
<form asp-controller="Customers" asp-action="CheckOffPriceListsAdjustments" method="post">
@foreach (var group in Model)
{
<div class="card">
<div class="card-header" id="heading@(group.Select(x => x.Date).FirstOrDefault())" style="background-color: #337ab7">
<h5 class="mb-0">
<span style="color:white" class="btn btn-link" data-toggle="collapse" data-target="#collapse@(group.Select(x => x.Date).FirstOrDefault())" aria-expanded="true" aria-controls="collapseOne">
@group.Select(x => x.Date).FirstOrDefault()
</span>
</h5>
</div>
<div id="collapse@(group.Select(x => x.Date).FirstOrDefault())" class="collapse show" aria-labelledby="heading@(group.Select(x => x.Date).FirstOrDefault())">
<div class="card-body">
<table id="infoTable" class="table table-fixed table-condensed">
<thead>
<tr>
<th class="col-xs-3">Bockad</th>
<th class="col-xs-3">Månad</th>
<th class="col-xs-3">Kund</th>
<th class="col-xs-3">Projektnr</th>
<th class="col-xs-3">Projektnamn</th>
<th class="col-xs-3">Uppgift</th>
<th class="col-xs-3">Avdelning</th>
<th class="col-xs-3">Name</th>
<th class="col-xs-3">Antal tim</th>
<th class="col-xs-3">Pris</th>
</tr>
</thead>
<tbody>
@foreach (var row in group.OrderBy(x => x.CustomerName))
{
<tr class="clickableRow">
<td class="col-xs-3"><input asp-for="@row.Checked" type="checkbox" /></td>
<td class="col-xs-3">@row.Date</td>
<td class="col-xs-3">@row.CustomerName</td>
<td class="col-xs-3">@row.ProjNr</td>
<td class="col-xs-3">@row.ProjName.TruncateString()</td>
<td class="col-xs-3">@row.Description</td>
<td class="col-xs-3">@row.SecCost</td>
<td class="col-xs-3">@row.Employee</td>
<td class="col-xs-3">@row.Hours</td>
<td class="col-xs-3">@row.Price</td>
<td><input type="hidden" asp-for="@row.Checked" /></td>
<td><input type="hidden" asp-for="@row.PriceListsAdjustmentsId" /></td>
</tr>
}
</tbody>
</table>
</div>
</div>
</div>
}
<div class="form-group" style="text-align: center; padding-top: 20px">
<input id="checkOffPricelists-form-btn" type="submit" value="save blabla.." class="btn btn-success" style="width:25%" disabled />
</div>
</form>
</div>
答案 0 :(得分:1)
如前所述,您需要使用for循环遍历模型集合,并通过索引引用项目。您还需要使用诸如TextboxFor之类的控件来使绑定起作用。
您可以看到两者之间源代码中生成的html的区别。
谢谢