【发布时间】:2019-11-21 15:37:32
【问题描述】:
大家好,我目前有一个我需要这张桌子的例子
<table class="table table-bordered" width="100%" cellspacing="0" id="tableID">
<thead>
<tr>
<th>A</th>
<th>B</th>
<th>C</th>
<th>D</th>
<th>E</th>
</tr>
</thead>
<tbody>
<tr>
<td align="center">val1</td>
<td align="center">val2</td>
<td align="center">val3</td>
<td align="center">1500</td>
<td align="center" class="myID"><input type="number" name="txtID" class="txtID" oninput="setValueAttr(this)" value="" min="0" max="1000"></td>
</tr>
<tr>
<td align="center">val1</td>
<td align="center">val2</td>
<td align="center">val3</td>
<td align="center">1500</td>
<td align="center" class="myID"><input type="number" name="txtID" class="txtID" oninput="setValueAttr(this)" value="" min="0" max="1000"></td>
</tr>
<tr>
<td align="center">val1</td>
<td align="center">val2</td>
<td align="center">val3</td>
<td align="center">1500</td>
<td align="center" class="myID"><input type="number" name="txtID" class="txtID" oninput="setValueAttr(this)" value="" min="0" max="1000" ></td>
</tr>
</tbody>
</table>
<form>
<button type="button" onclick="aplicar()">Aplicar</button>
</form>
<script>
function setValueAttr(el){
el.setAttribute('value', el.value)
}
function aplicar(){
var myTab = document.querySelectorAll('#tableID tbody tr .txtID:not([value=""])');
var tableData = [];
Array.from(myTab).forEach(input => {
var tds = input.closest('tr').children;
var obj = {};
obj.A = tds[0].textContent;
obj.B = tds[1].textContent;
obj.C = tds[2].textContent;
obj.D = tds[3].textContent;
obj.E = input.value;
tableData.push(obj);
});
tableData = JSON.stringify({ 'tableData': tableData });
$.ajax({
url: '@comercial.Models.Base.DirectorioRaiz()Controller/View',
type: 'post',
dataType: 'json',
contentType: 'application/json; charset=utf-8',
data: tableData,
success: function (response) {
$('#divPagosAplicados').html(response);
},
error: function (error) {
console.log(error);
}
});
}
</script>
我看到了一种在我的控制器中接收这个 json 的方法
public class tableData
{
public string A { get; set; }
public string B { get; set; }
public string C { get; set; }
public string D { get; set; }
public string E { get; set; }
}
public void View(List<tableData> tableDatas)
{
var t = tableDatas;
}
但是我需要在我的控制器中执行与此 javascript 类似的操作。
var total = [];
for (i = 0; i < tableData.length; i++) {
total[i] = "&num_operacion" + (i + 1) + "=" + tableData[i].A +
"&monto" + (i + 1) + "=" + tableData[i].E +
"&num_documento" + (i + 1) + "=" + tableData[i].B +
"&tipo_documento" + (i + 1) + "=" + tableData[i].C
}
我已经使用那个 javascript 完成了这个并使用 post 发送字符串,但是如果字符串足够大,ajax 会崩溃
【问题讨论】:
-
你是说 List
tableDatas 在发布后没有被填充吗? -
基本上它的作用是这样的,如果我们在表格行的 txtbox 上输入一些东西,并且它没有超过最大值,它将被保存在一个数组中,然后我会将它 JSON.stringify 到将它作为 JSON 发布到我的控制器,我的控制器说它是 null :( 但在调试器中它命中了变量,无论如何我打算把这篇文章变成我的控制器内的字符串我该怎么做?编辑:好的,我注意到了我还没有在控制器中声明列表,这就是为什么它是 null 我正在弄清楚如何修复它 lol
标签: javascript c# ajax asp.net-mvc controller