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()
创建一个ViewModelDoesPrecio
和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;