在.net核心中进行jquery / ajax调用时,模型属性始终为null。知道这里的问题是什么
var fileType = {
fileTypeDescription: fileTypeDescription,
isActive: isActive,
sortOrder: sortOrder,
CreatedDate: null,
CreatedBy: null,
ModifiedDate: null,
ModifiedBy: null
};
$.ajax({
url: url,
data: { a: fileType },
type: "POST",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {
alert('Success');
},
error: function (data, status, jqXHR) {
}
});
型号:
public class MdtFebFileType
{
public int FileTypeId { get; set; }
public string FileTypeDescription { get; set; }
public bool IsActive { get; set; }
public DateTime? CreatedDate { get; set; }
public string CreatedBy { get; set; }
public DateTime? ModifiedDate { get; set; }
public string ModifiedBy { get; set; }
public int? SortOrder { get; set; }
}
方法:
[HttpPost]
public Response AddFileType(MdtFebFileType fileType)
{}
对于ajax调用中的数据部分,我也尝试了以下内容,但没有一个工作。
JSON.stringify({ model: fileType })
JSON.stringify(fileType)
JSON.stringify({ 'model': fileType })
答案 0 :(得分:1)
知道这里的问题是什么
mdoel数据没有以正确的格式发送,因此它与控制器操作的预期模型不匹配。
要解决此问题的两件事。
首先按原样在客户端中对模型进行字符串化,以便以正确的格式发送数据
data: JSON.stringify(fileType),
第二,您需要明确告诉操作在哪里查找模型,以便模型绑定器可以填充模型。
[FromBody]
:使用配置的格式化程序绑定请求正文中的数据。根据请求的内容类型选择格式化程序。
[HttpPost]
public IActionResult AddFileType([FromBody]MdtFebFileType fileType) {
//...
}
答案 1 :(得分:0)
使用$ .post代替$ .ajax。这解决了我的问题。
示例
$.post(url, { fileTypeName: fileType })
.done(function (response, status, jqxhr) {
})
.fail(function (jqxhr, status, error) {
})