0

我有一个数据表,它使用这样的服务器端数据源:

    $('.taskTable').dataTable({
       "bServerSide": true,
       "bProcessing": false,
       "fnServerData": function (sSource, aoData, fnCallback) {
          ...
          aoData.push({ "name": "groupIDs", "value": $("#groupIDs").val() });
          ...
          $.ajax({
             'dataType': 'json',
             'type': 'post',
             'url': "@Url.Action(MVC.Tasks.Tasks.DataTable())",
             'data': aoData
          });
      }
   });

问题是,$("#groupIDs").val()没有格式化这些值,因此它们与我的模型(.NET MVC3)绑定。.NET 希望看到类似的东西,groupIDs[0]=23&groupIDs[1]=42&...但它却将其发送为groupIDs=[23,42,...]. 如何让数据表以正确的格式发送?

4

2 回答 2

3

弄清楚了。我决定手动输入这些值作为单独的参数,而不是努力让数据表按照我想要的方式自动格式化。

"fnServerData": function (sSource, aoData, fnCallback) {
   var groupIDs = $("#groupIDs").val()
   if (groupIDs != null) {
      for (x = 0; x < groupIDs.length; x++) {
         aoData.push({ "name": "groupIDs[" + x + "]", "value": groupIDs[x] });
      }
   }
   ... // more code
}

效果很好。希望这对其他人有帮助。

于 2012-08-06T17:58:41.653 回答
0

groups 23, 42, .... 相当于一个数组,现在我对 .net 了解不多,但我确信就像 PHP 一样,它在你的后端有一个 for, while, foreach 等价物循环这个数组并按照你的意愿处理它。

在这种情况下,你groupdIDs=[23,42]在后端的例子你会做类似的事情

(注意这是 PHP,我很抱歉它不是 .net)

foreach($_POST['groupIDs'] as $groupid)
{
   echo $groupid."<br>";
} 

或者

for($i=0;$i < count($_POST['groupIDs']);$i++)
{
    echo $_POST['groupIDs'][$i]."<br>";
}

或者

echo $_POST['groupIDs'][0]."<br>";
echo $_POST['groupIDs'][1]."<br>";
于 2012-08-06T17:37:58.287 回答