Javascript asp.net核心mvc控制器模型中未序列化表单数据

Javascript asp.net核心mvc控制器模型中未序列化表单数据,javascript,c#,jquery,knockout.js,asp.net-core,Javascript,C#,Jquery,Knockout.js,Asp.net Core,C#模型类 public class SubCategoryTwoViewModel { public long Id { get; set; } public string SubCatTwoName { get; set; } public CategoryViewModel Category { get; set; } public SubCategoryOneViewModel SubCatOne { get; set; } public stri

C#模型类

public class SubCategoryTwoViewModel
{
    public long Id { get; set; }
    public string SubCatTwoName { get; set; }
    public CategoryViewModel Category { get; set; }
    public SubCategoryOneViewModel SubCatOne { get; set; }
    public string PictureUrl { get; set; }
    public List<IFormFile> File { get; set; }
    public UserViewModel AddedBy { get; set; }
    public DateTime AddedOn { get; set; }
    public UserViewModel Updated_By { get; set; }
    public DateTime? UpdatedOn { get; set; }
    public bool Active { get; set; }
}
这里是控制器方法

[HttpPost]
public JsonResult AddEditSubCategoryTwo(SubCategoryTwoViewModel model)
{
}
下面是ajax调用,它使用表单数据序列化发送到控制器方法的数据

var ajaxUrl = ApplicationRootUrl("AddEditSubCategoryTwo", "Category");
var formData = new FormData();
var totalFiles = document.getElementById("subCatFile").files.length;

for (var i = 0; i < totalFiles; i++) {
    var file = document.getElementById("subCatFile").files[i];
    formData.append("File", file);
}

formData.append('SubCatTwoName', self.subCatTwoName());
var category = {
    CategoryId: self.selectCategory()
};

formData.append('Category', category);
var subCatOne= {
    SubCategoryOneId: self.selectCategorytwo()
};

formData.append('SubCatOne', subCatOne);
formData.append('Active', self.active());

$.ajax({
    type: "POST",
    contentType: false,
    processData: false,
    url: ajaxUrl,
    data: formData,
    dataType: "json",
    success: function (data) {
    }
});
var ajaxUrl=ApplicationRootUrl(“addeditsubcategory二”,“Category”);
var formData=new formData();
var totalFiles=document.getElementById(“子文件”).files.length;
对于(var i=0;i
一、 我在控制器中获得一些字段数据,但java脚本值未序列化到控制器模型

下面是示例的屏幕截图


在屏幕截图中,我得到的类别和子音调字段为null。但是处于活动状态,子脚本名称和文件字段已收到该值。我想在控制器模型对象中获取类别和子色调值。如何实现这一点。

尝试直接添加对象将不起作用。相反,您可以通过添加具有正确名称的嵌套字段(用点分隔属性层次结构)来使用模型绑定。e、 g


您正在将
javascript
对象附加到
FormData
“SubCatTwoName”
“Category”
。您在服务器上对密钥
“SubCatTwoName”
“Category”
的期望值是什么?我已在服务器端收到SubCatTwoName值。但是,我还没有收到Category的值。什么是
console.log(Category)
log?对象{CategoryId:5}这是控制台输出未尝试
asp.net核心
。您是否尝试过将
category
传递给
JSON.stringify()
?@Paul Hiles,这是否意味着我们无法在formData中发送JSON对象并通过asp.net核心操作中的模型正确处理它?
var ajaxUrl = ApplicationRootUrl("AddEditSubCategoryTwo", "Category");
var formData = new FormData();
var totalFiles = document.getElementById("subCatFile").files.length;

for (var i = 0; i < totalFiles; i++) {
    var file = document.getElementById("subCatFile").files[i];
    formData.append("File", file);
}

formData.append('SubCatTwoName', self.subCatTwoName());
var category = {
    CategoryId: self.selectCategory()
};

formData.append('Category', category);
var subCatOne= {
    SubCategoryOneId: self.selectCategorytwo()
};

formData.append('SubCatOne', subCatOne);
formData.append('Active', self.active());

$.ajax({
    type: "POST",
    contentType: false,
    processData: false,
    url: ajaxUrl,
    data: formData,
    dataType: "json",
    success: function (data) {
    }
});
formData.append('Category.CategoryId', self.selectCategory());