我在很多论坛上都读过,很多时候由于动作的参数具有相同的字段名称,模型无法绑定到控制器,但是我将其更改为唯一的名称,但我仍然没有在做了。 我是从html页面获取对象并使用JSON.Stringify对其进行序列化后传递的,如果在chrome工具中对其进行调试,则在“有效载荷请求”中一切看起来都很完美,但是一旦它击中控制器,模型便为null 。代码有什么问题?
型号:
public class JsonFileModel
{
public string[] Geo { get; set; }
public string[] State { get; set; }
public string[] Variables { get; set; }
public int[] Weights { get; set; }
public string[] Variable_Category { get; set; }
public string UID { get; set; }
}
AJAX呼叫:
var geo_graphic_level = $('input[name=geographic-radio-name]:checked').val();
var state = $('#states-select-id option:selected').val();
var v = $('#variable-list-select-id option:selected');
var variables = [];
var json = "'" + JSON.stringify(variables) + "'";
$(v).each(function (index, v) {
variables.push($(this).val())
});
var variable_category = $('#categories-select-id option:selected').val();
var weights = [];
$("input[name='weight-name']").each(function () {
weights.push(this.value);
});
//上面的代码给出了对象的值
$.ajax({
type: "POST",
url: '@Url.Action("Save", "Drive")',
dataType: "json",
data: JSON.stringify({
Geo: geo,
State: state,
Variables: variables,
Weights: weights,
Variable_Category: variable_category
}),
contentType: 'application/json',
success: function (result) {
console.log(result);
},
error: function (result) {
}
});
控制器:
[HttpPost]
public JsonResult Save([FromBody] JsonFileModel d)
{
//code code
return Json("worked");
}
答案 0 :(得分:0)
好吧,所以我定义了错误的属性,例如,当我只期望来自Geo的字符串时,我将模型定义为期望[]数组。修复后,一切工作正常!