从新手到专业人士的快速问题。
我正在尝试在我的应用程序中实现可编辑的网格类型表单。这是一个例子。
@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(),但我希望能够在标签中显示其他字段,当用户提交时我希望值得很好。
提前致谢。
答案 0 :(得分:0)
您可以同时执行DisplayFor
和HiddenFor
:
<td>
@Html.DisplayFor(m => m.Items[i].item_no)
@Html.HiddenFor(m => m.Items[i].item_no)
</td>
但是,为什么需要HiddenFor
?如果用户不应该编辑某些值,则无论如何都不能信任来自表单的值。如果你不相信它们,你将不得不阅读原件(例如从数据库)。 HiddenFor
在这里买了什么?