【发布时间】:2020-08-04 19:17:44
【问题描述】:
我有一个 MVC 应用程序,它将数据填充到表中并显示它。每个表行都有一个按钮,可以将数据保存到数据库中。我知道如何保存来自控制器的数据,我只想知道如何将点击的表格行中的数据传递给控制器?
@foreach (var item in Model.Properties)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.GrossYield)
</td>
<td>
@Html.DisplayFor(modelItem => item.listPrice)
</td>
<td>
@Html.DisplayFor(modelItem => item.monthlyRent)
</td>
<td>
@Html.DisplayFor(modelItem => item.yearBuilt)
</td>
<td>
@Html.DisplayFor(modelItem => item.Addresses.address1)
<br />
@Html.DisplayFor(modelItem => item.Addresses.address2),
@Html.DisplayFor(modelItem => item.Addresses.district),
@Html.DisplayFor(modelItem => item.Addresses.state),
@Html.DisplayFor(modelItem => item.Addresses.zip),
@Html.DisplayFor(modelItem => item.Addresses.country).
</td>
<td>
<button class="clsActionButton" id="idAddButton" onclick="idAddButton_onclick();">Add</button>
</td>
</tr>
}
这是我的表格,用于填充模型中的数据。当我单击添加按钮时,我想将整行数据发送到控制器。
【问题讨论】:
-
为了做到这一点,您基本上有 2 个选择:1) 在每一行上都有一个表单元素,以便按钮用作提交按钮 2) 编写 JavaScript 以手动获取数据并回发到服务器。这两种方法都不能很好地工作 IMO:1)不允许表单是
的直接子级 2)您必须编写许多硬编码的 JavaScript 代码来获取每个单元格的数据。当事情发生变化时,整个事情变得越来越难以维护。我建议您采用不同的方法:将表格视图保留为摘要视图。在每一行,你可以有一个 href 为每一行打开一个模式。 -
模态/弹出窗口(甚至可能是一个单独的页面)将有一个视图模型,它只代表一行记录(可能带有标识符)。
-
@DavidLiang 这个时候,我相信我会因为时间限制想去 JS 代码。我在网上找不到任何关于如何使用 JS 发送数据的信息,而且我对此知之甚少。你能帮我写一段代码吗?
-
好的。您需要发回哪些数据?全部?
-
@DavidLiang - 是的,无论单击哪个行按钮,整个行数据都是如此。我希望它到达我的控制器,在那里我编写了将其传递给数据库的代码。非常感谢。
标签: c# html asp.net-mvc