【问题标题】:How can I access the data inside dynamically created table rows on the server side?如何访问服务器端动态创建的表行中的数据?
【发布时间】:2014-07-29 20:21:45
【问题描述】:

只是一点背景知识:我正在创建一个 ASP.NET MVC Web 应用程序。

在我的主页中,我使用 AngularJS 创建了几个表行,虽然我可以在客户端访问它们,但我的最终目标是使用 vb.net 在服务器端处理数据。向正确方向轻推将不胜感激。谢谢你。

这是我的 AngularJS 控制器,用于向我的 html 表动态添加行。

function TableController($scope){

    $scope.requests = [];

    $scope.addCertificate = function () {
        var certificate = {
            emailAddress: $scope.emailAddress,
            certificateType: $scope.certificateType,
            searchType: $scope.searchType,
            submittedNumbers: $scope.submittedNumbers,
        };

        $scope.requests.push(certificate);
    };

    $scope.removeCertificate = function (index) {
        $scope.requests.splice(index, 1);
    };
}

【问题讨论】:

  • 我不了解 ASP,但是如果您传递多个具有相同名称的值,则应该有一些标准转换为数组。您可以比较具有相同索引的项目以了解哪些与哪些相关。另一种选择是在请求正文中发送完整的 JSON,然后在服务器端解析它。

标签: asp.net vb.net angularjs


【解决方案1】:

确保动态表中的输入字段、选择框、文本区域等具有与之关联的名称。

然后你有两个选择:

  1. 对每一行的输入使用相同的名称。例如,如果您有一个包含五行的表,并且每一行都有一个输入来保存姓氏,那么这五个输入将被命名为“LastName”。然后,您的 post 函数可以具有参数 LastName,这将是您的值的逗号分隔字符串:

    [HttpPost]
    public ActionResult YourPostFunction(string LastName)
    {
        // split LastName on "," to convert to an array or List and then process.
    }
    
  2. 像数组一样索引输入的名称。例如,如果您有一个包含五行的表,并且每一行都有一个输入来保存姓氏,那么这五个输入将被命名为 LastName[0]、LastName[1]、LastName[2]、LastName[3]、和姓[4]。然后,您应该能够通过这样的 MVC 操作访问这些字段:

    [HttpPost]
    public ActionResult YourPostFunction(List<string> LastName)
    {
    
    }
    

在任何一种情况下,您的 MVC 操作都不需要知道发布给您的 LastName 字段的数量。您将有一个逗号分隔的字符串或一个列表,然后您可以迭代并相应地进行处理。

需要更多细节(和代码,如果可能的话)来提供更详细的答案。

【讨论】:

  • 这是假设,当然,你正在做一个常规的帖子,而不是发送 JSON。如果将表单打包为 JSON,您将根据您提出的任何命名约定按名称解析输入。
  • 感谢您提及所有这些关键字。我是 web 开发的新手,所以我真的不知道它们中的大多数是什么意思。我在我的 angularJS 脚本中进行了编辑,我用它来动态地将新行添加到我的 html 表中。顺便问一下,为什么我不能在我的页面源代码中查看这些控件?
猜你喜欢
  • 2013-12-27
  • 1970-01-01
  • 2014-03-10
  • 1970-01-01
  • 1970-01-01
  • 2017-05-28
  • 2010-09-30
  • 2019-06-25
  • 2021-08-17
相关资源
最近更新 更多