Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 如何将表格行内表单中的两个值传递给控制器?剃须刀_Asp.net Mvc_Razor - Fatal编程技术网

Asp.net mvc 如何将表格行内表单中的两个值传递给控制器?剃须刀

Asp.net mvc 如何将表格行内表单中的两个值传递给控制器?剃须刀,asp.net-mvc,razor,Asp.net Mvc,Razor,我怎么做这张桌子 <table class="table table-bordered table-striped" style="width:100%"> <thead> <tr> <th> Name </th> <

我怎么做这张桌子

<table class="table table-bordered table-striped" style="width:100%">
        <thead>
            <tr>
                <th>
                    Name
                </th>
                <th>
                    Price
                </th>
                <th>
                    Quantity
                </th>
                <th>
                    Options
                </th>
            </tr>
        </thead>
        <tbody>
            @foreach (var item in Model.Items)
            {
                <tr>
                    <td>@item.Name</td>
                    <td>@item.Price</td>
                    <td><input type="number" name="Quantity"/> </td>
                    <td><input type="submit" class="btn btn-primary" value="Add" /></td>
                </tr>
            }
        </tbody>

    </table>

我发现您可以将每个项目放入一个表中,并为每个项目创建一个表单,但我想知道,如果您需要发布所有行值(假设每行是不同的对象),则是否可以使用asp.net使其变得更简单,然后使用表外的表单并将所需的属性输入到输入中以便发布

如果您需要发布单行值(仅提交值被修改的行),那么您可以编写一些JS并对当前行中的所有输入进行post或ajax post

$(document).on('keypress', 'input[data-ajax="row"]', function (e) {
if (e.keyCode !== 13) {
    return;
}

var self = $(this);
var row = self.closest('tr');
var url = '/controller/action';

var propertyNames = new Array();
var propertyValues = new Array();
row.find('input[data-ajax="row"]').each(function () {
    $(this).attr('readonly', 'readonly');
    propertyNames.push($(this).attr('id'));
    propertyValues.push($(this).val());
});

$.ajax({
    url: url,
    type: 'POST',
    data: { propertyNames, propertyValues },
    success: function (data) {
        //SUCCESS CODE HERE (reload)
    },
    error: function (data) {
        console.log('error');
        alert('error');
    }
});

return;
}))

请注意,您需要将
data ajax=“row”
属性添加到输入中。您还可以删除动态代码,并在行范围内找到所有需要的控件。
Ej:
var name=row.find(“#name”).val()

创建一个ViewModelDoes
Precio
Cantidad
Price
Quantity
吗?我认为创建表单是你说的最简单的方法。我要用ajax做js,泰!
public class Item
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public float Price { get; set; }
        public int Quantity { get; set; }
    }
$(document).on('keypress', 'input[data-ajax="row"]', function (e) {
if (e.keyCode !== 13) {
    return;
}

var self = $(this);
var row = self.closest('tr');
var url = '/controller/action';

var propertyNames = new Array();
var propertyValues = new Array();
row.find('input[data-ajax="row"]').each(function () {
    $(this).attr('readonly', 'readonly');
    propertyNames.push($(this).attr('id'));
    propertyValues.push($(this).val());
});

$.ajax({
    url: url,
    type: 'POST',
    data: { propertyNames, propertyValues },
    success: function (data) {
        //SUCCESS CODE HERE (reload)
    },
    error: function (data) {
        console.log('error');
        alert('error');
    }
});

return;