【问题标题】:How to build a string with array index and elements如何使用数组索引和元素构建字符串
【发布时间】: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


【解决方案1】:

我解决了这个问题,用我在 tableData 中的元素创建字符串,像这样

for (i = 0; i<tableData.length; i++) {
     total[i] = "&A" + (i + 1) + "=" + tableData[i].A +
     &B" + (i + 1) + "=" + tableData[i].E +
     "&C" + (i + 1) + "=" + tableData[i].B +
     "&D" + (i + 1) + "=" + tableData[i].C
    }

Aftermath 在视图中添加了一个隐藏的输入

<form ="id">
<input type="hidden" name="zURL" id="zURL" class="form-control">
</form>

并在我的第一个脚本末尾添加了这个 js

document.getElementById("zURL").value = zURL;

这样我就可以在我的控制器中的表单集合中获取输入,并根据我的需要将其分发到我的模型中

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-03
    • 2022-10-05
    • 1970-01-01
    • 2021-09-27
    相关资源
    最近更新 更多