javascript - 通过 AJAX 将 JSON 数据传递给控制器时的 NULL 值
问题描述
尝试将以下 JSON 从视图传递到控制器
{
"allselected": false,
"selectedIds": ["", "all"],
"targetControl": "Studieniva",
"targetSource": "studienivalist",
"dependency": [{
"name": "ShopNo",
"selectedvalues": "311"
}, {
"name": "Institution",
"selectedvalues": ["all", "UIO"] // THIS IS COMING AS NULL AT CONTROLLER . OCCURS ONLY WHEN MULTIPLE ITEMS UNDER dependency
}]
}
发送请求的 Javascript 代码如下(尝试同时发出多个请求并根据每个请求的响应加载一些下拉菜单)
var targetcontrols_array = targetControl.split(',');
var targetsource_array = targetSource.split(',');
const arrOfPromises = targetcontrols_array.map(function(item, index) {
var control_name = item;
var source = targetsource_array[index];
var request_data = JSON.stringify({ allselected: allselected_flag, selectedIds: selectedvalues, targetControl: control_name, targetSource: source, dependency: dependencyOptions });
console.log("req:"+request_data); //SAMPLE JSON ADDED On TOP
return new Promise((resolve) => {
$.ajax({
url: action_url,
type: 'POST',
traditional: true,
async: false,
data: request_data,
contentType: "application/json; charset=utf-8",
dataType: 'json',
success: function (response) {
//process response
}
})
});
});
Promise.all(arrOfPromises);
MVC 控制器动作如下
[HttpPost]
public JsonResult CascadingDropDown(DynamicFormSelectModel model)
{
model.dependency values are not coming correctly . Observing that the value of SelectedValues is NULL in some cases
( OCCURS ONLY WHEN MULTIPLE ITEMS UNDER dependency )
}
public class DynamicFormSelectModel
{
public bool allselected { get; set; }
public string[] selectedIds { set; get; }
public string targetSource { set; get; }
public string targetControl { set; get; }
public List<DynamicFormDependencyOptions> dependency { set; get; }
}
public class DynamicFormDependencyOptions
{
public string Name { get; set; }
public string SelectedValues { get; set; }
}
在尝试读取请求 model.dependency values 时,有时会得到 NULL ,即使值是从 View 传递的(示例附加 JSON 传递 2 个值 "name": "Institution", "selectedvalues": ["all", "UIO"] , 但在控制器中我得到了 NULL . 主要发生在依赖属性下存在多个项目并且不知道为什么它作为 NULL 出现时
解决方案
public class DynamicFormDependencyOptions
{
public string Name { get; set; }
public string SelectedValues { get; set; }
}
将其更改为
public class DynamicFormDependencyOptions
{
public string Name { get; set; }
public string[] SelectedValues { get; set; }
}
此代码将SelectedValues作为字符串对象,但数据采用字符串数组形式,使 SelectedValues 成为字符串数组,您将得到它....并相应地更改以下代码以解析字符串数组,就像您对selectedIds所做的那样。
推荐阅读
- api - 为什么在输入地址上使用 getPlace() 时谷歌自动完成返回未定义
- git - gitlab-ci.yml 仅在受保护的分支上运行作业
- php - 为什么我的 PHP mail() 没有发送到我自己的域但对其他人很好
- python - 从用户那里接收整数,直到他们输入 0
- c++ - 访问包含 P 的有效索引时返回空格的 C++ 字符串
- gcc - 如何使用英特尔语法将参数传递给内联 GCC/Clang 程序集?
- python - 替换 jupyter matplotlib 图表中的最新行
- python - 从 main 运行时函数不运行或返回
- php - Shopware6 中具有自定义事件的自定义实体
- c# - 使用 StreamReader 读取编码标识符