使用数组参数将POST ajax调用提交给控制器。
我有一个参数数组,
我有一个用于检查参数数组的静态数组。
我使用.Except方法创建了第三个数组,以创建除了参数值以外的所有内容的数组。
POST ajax调用按应有的方式工作。我可以返回并查看发送给它的值。这就是我正在使用的快速TempData。因此,我知道参数不为空。
这里是控制器:
<?php
require_once ('SimpleXLSX.php');
if ($xlsx = SimpleXLSX::parse('test.xlsx')) {
$Arr = array();
$count = 0;
$i = 0;
$WithoutHeader = $xlsx->rows();
unset($WithoutHeader[0]);
$totalRowInColumn = $xlsx->dimension()[1];
foreach ($xlsx->rows()[0] as $key => $val) {
if ($key != 0 && $key != 1) {
for ($i = 1; $i < $totalRowInColumn; $i++) {
for ($j = 1; $j < $totalRowInColumn; $j++) {
$Arr[$val][$WithoutHeader[$j][$i]] = 'val';
}
}
}
}
echo '<pre>';
print_r($Arr);
echo '</pre>';
} else {
echo SimpleXLSX::parseError();
}
function pr($data) {
echo "<pre>";
print_r($data);
echo "</pre>";
}
令人沮丧,因为我之前曾做过这项工作。我没有更改任何会导致它现在执行此操作的操作。任何帮助将不胜感激。
答案 0 :(得分:3)
在调用.Trim()
之前,可能需要对参数数组中的元素进行空检查:
string[] DifferArray = sublineArray.Except(subLineNames.Where(m => !string.IsNullOrWhiteSpace(m)).Select(m => m.Trim())).ToArray();
更好的是,您可以存储对已清理参数数组的引用:
[HttpPost]
public ActionResult MyAction(string[] subLineNames)
{
if (subLineNames == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest, $"You must provide {nameof(subLineNames)}.");
}
var sanitizedSubLineNames = subLineNames.Where(m => !string.IsNullOrWhiteSpace(m)).Select(m => m.Trim());
var sublineArray = new string[] { "BI/PD", "Hired", "Non-Owned", "PIP", "Addtl-PIP", "Medical Payments", "UM PD", "UM CSL", "UIM CSL", "Terrorism" };
var differArray = sublineArray.Except(sanitizedSubLineNames).ToArray();
// Do something...
}