c# - 如何通过 ID 访问 IEnumerable 模型的第 2 项(或 3 或 ...x)
问题描述
我正在寻找最佳实践。我有一些有用的东西,但我不知道它是否“正确”。
我正在构建一个页面,客户可以在其中输入三种不同类型许可证的付款数据。我正在发送我的许可证的 IEnumerable。它包含 3 个空许可证。
澄清:最终用户可以拥有 1、2 或 3 个许可证,并且每个许可证都具有独特的类型——“钓鱼”、“划船”或“特许权”。
我围绕这个概念构建了视图:
<div class="form-group row">
<div class="col-md-2" align="right" style="padding-top:5px">
<strong>@Html.LabelFor(model => model.FirstOrDefault().Notes, "Notes:", htmlAttributes: new { @class = "control-label" })</strong>
</div>
<div class="col-md-9">
<div class="row">
<div class="col-md-4" align="left">
@Html.EditorFor(model => model.Take(1).FirstOrDefault().Notes, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.Take(1).FirstOrDefault().PermitTypeId, "", new { @class = "text-danger" })
</div>
<div class="col-md-4" align="left">
@Html.EditorFor(model => model.Skip(1).Take(1).FirstOrDefault().Notes, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.Skip(1).Take(1).FirstOrDefault().PermitTypeId, "", new { @class = "text-danger" })
</div>
<div class="col-md-4" align="left">
@Html.EditorFor(model => model.Skip(2).Take(1).FirstOrDefault().Notes, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.Skip(2).Take(1).FirstOrDefault().PermitTypeId, "", new { @class = "text-danger" })
</div>
</div>
</div>
</div>
客户为每种适当的付款类型输入数据,保存按钮将数据发回,我检查每种付款类型是否不为空,然后照常处理。
这是正确的方法吗?有没有更好的办法?
任何输入将不胜感激。
问候, 卡萨克斯
解决方案
您可以foreach
在标记中使用循环来遍历可枚举。
<div class="form-group row">
<div class="col-md-2" align="right" style="padding-top:5px">
<strong>@Html.LabelFor(model => model.FirstOrDefault().Notes, "Notes:", htmlAttributes: new { @class = "control-label" })</strong>
</div>
<div class="col-md-9">
<div class="row">
foreach (var item in Model)
{
<div class="col-md-4" align="left">
@Html.EditorFor(modelItem => item.Notes, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(modelItem => item.PermitTypeId, "", new { @class = "text-danger" })
</div>
}
</div>
</div>
</div>