我正在尝试构建一个局部视图,它可以在顶部添加一条记录并显示添加项目的列表。
我有以下代码。为什么我必须在“添加”html表单中添加html表格FirstOrDefault()
的一部分?<th>
它似乎FirstOrDefault()
总是需要的,因为模型是IEnurable<>
. 但是,检查所有的脚手架Index.cshtml
文件,你会发现FirstOrDefault()
表头中没有。
为添加和删除操作实现一个编辑页面是否是一种更好的方法?
@model IEnumerable<Models.MyModel>
@using (Html.BeginForm("AddItem", "MyAction", FormMethod.Post))
{
<div class="editor-label">
@Html.LabelFor(model => model.FirstOrDefault().Col1)
</div>
<div class="editor-field">
@Html.EditorFor(m => m.FirstOrDefault().Col1)
@Html.ValidationMessageFor(m => m.FirstOrDefault().Col1)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.FirstOrDefault().Col2)
</div>
<div class="editor-field">
@Html.EditorFor(m => m.FirstOrDefault().Col2)
@Html.ValidationMessageFor(m => m.FirstOrDefault().Col2)
</div>
<input type="submit" name="Submit" id="Submit" value="Add" />
}
<table>
<tr>
<th>
@Html.DisplayNameFor(model => model.Col1)
</th>
<th>
@Html.DisplayNameFor(model => model.Col2)
</th>
<th></th>
</tr>
@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.Col1)
</td>
<td>
@Html.DisplayFor(modelItem => item.Col2)
</td>
<td>
@Html.ActionLink("Delete", "Delete", new { item.Col1, item.Col2})
</td>
</tr>
}
</table>
更新:
我将其更改为@Html.EditorFor(m => (new Model.MyModel()).Col1)
,这不会在插入输入中携带第一行的值。这应该是解决方案之一。