我有一个列出产品的表格,以及显示数量文本框和Html.ActionLink。每个数量文本框都具有从产品ID派生的唯一ID。我认为这应该很简单,但我似乎无法弄清楚如何在用户点击链接时将相关文本框中的值传递给我的控制器。我的代码如下,任何帮助表示赞赏。
<% foreach (var item in Model) { %>
<tr>
<td>
<%= Html.Encode(item.Id) %>
</td>
<td>
<%= Html.Encode(item.Description) %>
</td>
<td>
<%= Html.Encode(String.Format("${0:F}", item.Cost)) %>
</td>
<td>
<%= Html.TextBox(String.Format("quantity{0}", item.Id), "0") %>
</td>
<td>
<%= Html.ActionLink("Add", "Add", new { id = item.Id, quantity="I want the quantity here?" })%>
</td>
</tr>
答案 0 :(得分:3)
无法在HTML中执行此操作,因此在ASP.NET MVC中无法执行此操作。
您可以选择以下两种可能的解决方案:
使用JavaScript,当用户编辑文本框时,您可以动态更改锚标记的值以包含他们输入的内容。您不能使用ASP.NET路由,因为它在服务器上运行你需要客户端代码。
执行表单提交而不是链接。这是HTML中推荐的方式。当用户提交数据时,它应该是一种形式。将所有内容包装在表单标签中,然后将文本框和按钮放在那里。将表单的操作设置为您希望其发布到的URL。
答案 1 :(得分:2)
我认为你想要的是:
<%= Html.TextBox(String.Format("item[{0}].quantity", item.Id), "0") %>
有关详细信息,请查看以下Scott Hanselman博客文章:
ASP.NET Wire Format for Model Binding to Arrays, Lists, Collections, Dictionaries
另见史蒂夫桑德森的这篇博客文章。它允许您编辑单个项目: