我有多个“数量”文本框,我如何张贴所有文本框的值

本文关键字:文本 何张贴 数量 | 更新日期: 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从数据库中检索它们。