【发布时间】:2020-03-15 11:43:26
【问题描述】:
谁能解释我如何使用数组中的值的数量及其元素构建一个字符串。
例如,现在我有这个表,如果我们在 txtbox 中输入一个值,它会从表中提取数据,无论如何,这会构建一个行数据数组
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);
});
console.log(tableData);
}
<table class="table table-bordered" width="100%" cellspacing="0" id="tableID">
<thead>
<tr>
<th>num</th>
<th>mon</th>
<th>doc</th>
<th>type</th>
<th>val</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>
我需要像这样从这些数据中创建一个字符串
total[]=&num1={}&mon1={}&doc1={}&type1={}&val1={}&num2={}&mon2={}&doc2={}&type2={}&val2={}
在哪里
total = *n* the number of elements inside tableData[]
和
numN monN typeN valN = the values inside an element of tableData[]
由于 html 示例的输出而使用了该结构
[
{
"A": "val1",
"B": "val2",
"C": "val3",
"D": "1500",
"E": "1000"
}
]
目前使用它发布到控制器中
<script>
function setValueAttr(el) {
el.setAttribute('value', el.value)
}
function aplicar() {
var myTab = document.querySelectorAll('#DocumentosAbiertos tbody tr .txtID:not([value=""]):valid');
var tableData = [];
Array.from(myTab).forEach(input => {
var tds = input.closest('tr').children;
var obj = {};
obj.A = tds[8].textContent;
obj.B = tds[1].textContent;
obj.C = tds[6].textContent;
obj.D = tds[5].textContent;
obj.E = input.value;
tableData.push(obj);
});
console.log(tableData);
data = JSON.stringify(tableData)
$.ajax({
url: '~/Controller/myView',
type: 'post',
contentType: 'application/json',
data: data,
success: function (response) {
console.info(response);
},
error: function (error) {
console.error(error);
}
});
}
</script>
因此我的控制器看起来像这样。
[HttpPost]
public JsonResult myView(IList<ModelPagosRecibidos> models)
{
comercial.Models.ModelPagosRecibidos modelPagosRecibidos = new Models.ModelPagosRecibidos();
return Json(modelPagosRecibidos);
}
这是我的模型
public class ModelPagosRecibidos
{
public string A { get; set; }
public string B { get; set; }
public string C { get; set; }
public int D { get; set; }
public string E { get; set; }
}
它在这个数据集上的位置,这是问题的重点,如何在这个数据集字符串中分布数据,我使用我使用 AJAX 动态发布的数组的值构建。
public System.Data.DataSet linkDoc()
{
string operacion = A;
string metodo = B;
string monto = C;
string fecha = D;
string fecha = E;
string sURL = ("total_registros=" + operacion + "&num_pago1=" + metodo + "&monto1=" + monto + "&num_documento1=" + fecha + "&tipo_documento1=" + E + "&");
DataSet ds = utilities.get(sURL);
return ds;
}
【问题讨论】:
-
这个不是很清楚。如果在上面的值中输入了“10”,请您显示输出字符串的样子。
-
我想知道你为什么要这样做。我看到您将其标记为 MVC,这与我期望的 MVC 中模型绑定的方式不同......
-
我正在尝试添加模型和控制器我只是清理代码抱歉延迟
-
好吧,如果您将此数据发送到控制器,通常我会将其视为 JSON,而不是像这样的 URL 类型的字符串,所以这就是我有点困惑的地方跨度>
标签: javascript c# html arrays asp.net-mvc