我有多个“数量”文本框,我如何张贴所有文本框的值
本文关键字:文本 何张贴 数量 | 更新日期: 2023-09-27 18:09:16
我如何得到输入值的文本框张贴到我的控制器值。想到使用数组,但不知道从哪里开始。文本框是动态的,因为每个文本框都有计数器数
@{
var counter = 0;
foreach (var addedProduct in Model)
{
counter++;
<tr class="default" data-ng-controller="deleteItemsController">
<td>@addedProduct.name</td>
<td>@addedProduct.price</td>
<td>
<input type="text" id="quantity_@counter" name="quantity_@counter"/>
</td>
</tr>
}
}
<tr>
<td><b>Total:</b>{{@ViewBag.total}}</td>
<td>
@using (Html.BeginForm("Index", "Payment"))
{
//how do i get quantity values//
<input type="submit" value="pay">
}
</td>
我的模型:
public class ProductVar
{
public int productID { get; set; }
public string name { get; set; }
public int price { get; set; }
public int quantity { get; set; }
public int total { get; set; }
}
我还没有实现的方法,试图找出如何张贴所有的值第一。
你很接近了。阅读Phil Haack的this blog post
,你就会清楚你的输入字段应该如何命名。您将了解模型绑定在ASP中是如何工作的。NET MVC。
你也应该把你的<input>
字段在HTML <form>
或什么都不会被发送到服务器当这个表单被提交。
因此,首先修改视图代码,以便使用强类型HTML帮助程序生成输入字段。他们会考虑给它们起个恰当的名字:
@using (Html.BeginForm("Index", "Payment"))
{
for (var i = 0; i < Model.Count; i++)
{
<tr class="default" data-ng-controller="deleteItemsController">
<td>@Html.DisplayFor(x => x[i].name)</td>
<td>@Html.DisplayFor(x => x[i].price)</td>
<td>
@Html.EditorFor(x => x[i].quantity)
</td>
</tr>
}
<tr>
<td>
<b>Total:</b>
@ViewBag.total
</td>
<td>
<input type="submit" value="pay" />
</td>
</tr>
}
现在你可以让你的控制器动作在表单提交时被触发:
[HttpPost]
public ActionResult Index(ProductVar[] model)
{
...
}
在本例中,只有模型的quantity
字段将被发送到服务器,因为这是HTML表单中唯一的输入字段,因此是发送到服务器的唯一值。如果您想绑定其他值,您可以将它们作为隐藏字段包含:
@Html.HiddenFor(x => x[i].name)
@Html.HiddenFor(x => x[i].price)
当然,在大多数情况下,这是不好的做法,因为用户可以操纵这些值。最好的方法是在POST操作中使用与呈现此表单的GET操作中检索相同的id从数据库中检索它们。