我们正在 MVC3 中构建一个应用程序,并且我们希望拥有可编辑的数据表。我们所追求的是这样的(略有删节):
<table class="project-items data-grid">
foreach (var item in Model.Items) {
using (Html.BeginForm("SaveItem", "Project", FormMethod.Post)) {
<tr>
<td>@Html.TextBox("Title", item.Title) @Html.Hidden("ProjectID", proj.ProjectID) @Html.Hidden("ItemID", item.ItemID)</td>
<td>@Html.DropDownList("State", item.State.ToSelectList(), "")</td>
<td>@Html.DropDownList("QuoteID", Model.Quotes.ToSelectList(item.QuoteID), "")</td>
<td>@Html.TextBox("EstimatedCost", item.EstimatedCost, new { @class = "costfield" })</td>
<td>@Html.TextBox("VendorEstimatedCost", item.VendorEstimatedCost, new { @class = "costfield" })</td>
<td>@Html.TextBox("VendorQuotedCost", item.VendorQuotedCost, new { @class = "costfield" })</td>
<td><input type="submit" value="Save" name="Save"/></td>
</tr>
}
}
</table>
当然,将 a<form>
直接放入 a<table>
不是有效的 HTML;它似乎在某些情况下有效,但在其他情况下,它完全吓坏了浏览器和/或模型绑定器。
什么是最安全、最干净的方法来做到这一点,这样我们就不会依赖未定义的行为?我想要一些适合有或没有 AJAX 的表单的东西。我玩弄了 using<div>
和display: table-cell
技巧,但这阻止了使用colspan
,我们也需要这样做。