我正在使用IQueryable<Book>
作为我的模型CheckIn
查看。
我有兴趣允许用户同时 checkin 多本书。这就是我使用IQueryable
的原因对于模型。
如果我错了,请纠正我,但据我所知,对于这种情况,@Html.EditorFor
将创建多个具有相同元素 id 的元素。不是吗?
为可查询集合中的所有书籍创建编辑器表单并确保客户端验证继续有效的最佳方法是什么?
最佳答案
Please correct me if I am wrong but as far as I know for this scenario, @Html.EditorFor will create more than one element with the same element id. Wouldn't it?
呃,不。
型号:
public class Book
{
public int Id { get; set; }
public bool Selected { get; set; }
}
Controller :
public class HomeController : Controller
{
public ActionResult Index()
{
var model = new[]
{
new Book { Id = 1, Selected = false },
new Book { Id = 2, Selected = true },
new Book { Id = 3, Selected = false },
};
return View(model);
}
[HttpPost]
public ActionResult Index(IEnumerable<Book> model)
{
return View(model);
}
}
查看:
@model IEnumerable<Book>
@using (Html.BeginForm())
{
<table>
<thead>
<tr>
<th>Id</th>
<th>Selected</th>
</tr>
</thead>
<tbody>
@Html.EditorForModel()
</tbody>
</table>
<button type="submit">OK</button>
}
编辑器模板(~/Views/Shared/EditorTemplates/Book.cshtml
):
@model Book
<tr>
<td>@Html.EditorFor(x => x.Id)</td>
<td>@Html.CheckBoxFor(x => x.Selected)</td>
</tr>
生成的标记:
<form action="/" method="post">
<table>
<thead>
<tr>
<th>Id</th>
<th>Selected</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<input class="text-box single-line" data-val="true" data-val-number="Le champ Id doit &#234;tre un nombre." data-val-required="The Id field is required." name="[0].Id" type="text" value="1" />
</td>
<td>
<input data-val="true" data-val-required="The Selected field is required." name="[0].Selected" type="checkbox" value="true" />
<input name="[0].Selected" type="hidden" value="false" />
</td>
</tr>
<tr>
<td>
<input class="text-box single-line" data-val="true" data-val-number="Le champ Id doit &#234;tre un nombre." data-val-required="The Id field is required." name="[1].Id" type="text" value="2" />
</td>
<td>
<input checked="checked" data-val="true" data-val-required="The Selected field is required." name="[1].Selected" type="checkbox" value="true" />
<input name="[1].Selected" type="hidden" value="false" />
</td>
</tr>
<tr>
<td>
<input class="text-box single-line" data-val="true" data-val-number="Le champ Id doit &#234;tre un nombre." data-val-required="The Id field is required." name="[2].Id" type="text" value="3" />
</td>
<td>
<input data-val="true" data-val-required="The Selected field is required." name="[2].Selected" type="checkbox" value="true" />
<input name="[2].Selected" type="hidden" value="false" />
</td>
</tr>
</tbody>
</table>
<button type="submit">OK</button>
</form>
关于asp.net-mvc - ASP .Net MVC 3 - 表单、批量编辑、强类型 View 和验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9265491/