提交列表<t>的项目</t>

时间:2011-09-15 07:32:02

标签: asp.net-mvc-3 razor

从新手到专业人士的快速问题。

我正在尝试在我的应用程序中实现可编辑的网格类型表单。这是一个例子。

 @for (int i = 0; i < Model.Items.Count; i++)
    {
        <tr>
            <td>@Html.CheckBoxFor(m => m.Items[i].fav_ind)
            </td>
            <td>
                <a href="#" onclick="ShowDeals(@Model.Items[i].item_no);event.returnValue = false; return false;">
                    DEALS</a>
            </td>
            <td>@Html.DisplayFor(m => m.Items[i].item_no)
            </td>
            <td>@Html.DisplayFor(m => m.Items[i].item_desc)
            </td>
            <td>@Html.DisplayFor(m => m.Items[i].mfr_item)
            </td>
            <td>@Html.DisplayFor(m => m.Items[i].pack_size)
            </td>
            <td>@Html.DisplayFor(m => m.Items[i].purc_uom)
            </td>
            <td>@Html.DisplayFor(m => m.Items[i].purc_uom_conv)
            </td>
            <td>@Html.DisplayFor(m => m.Items[i].list_prc)
            </td>
            <td>
                @Html.TextBoxFor(m => m.Items[i].nett_prc)
            </td>
            <td>
                @Html.TextBoxFor(m => m.Items[i].Qty)
            </td>
        </tr>
    }

这个@for在Html.BeginForm中,因为我希望用户能够编辑最后两个字段(nett_prc和qty。此网格底部还有一个提交底部(表)。

现在提出问题,当我提交时,我将所有行返回到控制器中,但是在项目上只有2个字段是Html.TextBoxFor()中有数据。我想得到控制器中的所有字段。我知道我可以使用@ Html.HiddenFor(),但我希望能够在标签中显示其他字段,当用户提交时我希望值得很好。

提前致谢。

1 个答案:

答案 0 :(得分:0)

您可以同时执行DisplayForHiddenFor

<td>
    @Html.DisplayFor(m => m.Items[i].item_no)
    @Html.HiddenFor(m => m.Items[i].item_no)
</td>

但是,为什么需要HiddenFor?如果用户不应该编辑某些值,则无论如何都不能信任来自表单的值。如果你不相信它们,你将不得不阅读原件(例如从数据库)。 HiddenFor在这里买了什么?