【发布时间】:2015-01-12 06:04:51
【问题描述】:
我可以将表 td 值传递给控制器吗?
查看强类型:
@using (Html.BeginForm("PostClick", "Vendor", FormMethod.Post)) {
<table class="tblData">
<tr>
<th>
@Html.DisplayNameFor(model => model.First().SubmittedDate)
</th>
<th>
@Html.DisplayNameFor(model => model.First().StartDate)
</th>
</tr>
<tr>
<td>
@Html.DisplayFor(modelItem => item.SubmittedDate)
</td>
<td>
@Html.DisplayFor(modelItem => item.StartDate)
</td>
</tr>
</table>
<input type="submit" value="submit" />
}
控制器代码:
public void PostClick(FormCollection collection)
{
/*Some Code */
}
如何将表值从视图传递到控制器?
已使用 JasonData 和 Ajax 调用并能够将表数据发送到控制器。
想知道任何其他方法可以做到,因为FormCollection数据无法找到表值
【问题讨论】:
-
@Html.DisplayFor()不会创建回发控件。您需要生成input、textarea或select元素 - 例如使用@Html.TextBoxFor()。而您使用model.First().SubmittedDate的事实表明您有一个集合,这意味着您需要在for循环中生成每个表行。你应该通过回发你的模型来利用 MVC 的模型绑定特性(不使用FormCollection) -
感谢斯蒂芬。是的,将 FormCollection 替换为 EnityClass public void PostClick(List
Vendor) { } 。但 List Vendor 对象显示为空。上面的 Context 可以用 DisplayFor() 代替什么来实现 Vendor 列表中的结果。 -
使用
Vender而不是List<Vendor>它是单个对象而不是集合 -
您的模型在视图
@model List<Vendor>中吗?在这种情况下,您需要for(int i = 0; i < Model.Count; i++){ @Html.TextBoxFor(m => m[i].SubmittedDate) ..... } -
谢谢大家的回复。是的用于循环。数据在 View 正确显示。必须将表值从视图传递到控制器。这是现在的实际问题????