1

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 を a の<form>中に直接置くの<table>は有効な HTML ではありません。場合によってはうまくいくように見えますが、ブラウザやモデル バインダーを完全に狂わせてしまう場合もあります。

未定義の動作に依存しないようにするための最も安全でクリーンな方法は何ですか? AJAX の有無にかかわらず、フォームに適したものが欲しいです。<div>私はとトリックを使って遊んでいましdisplay: table-cellたが、それは の使用を妨げcolspanます。これも行う必要があります。

4

2 に答える 2