javascript - 表单数据未在 asp.net core mvc Controller 模型中序列化

标签 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 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; }
}

这是 CategoryViewModel

public class CategoryViewModel
    {
        public long CategoryId { get; set; }
}

这是 Controller 方法

[HttpPost]
public JsonResult AddEditSubCategoryTwo(SubCategoryTwoViewModel model)
{
}

这是使用表单数据序列化发送到 Controller 方法的数据的 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) {
    }
});

我正在 Controller 中获取一些字段数据,但 java 脚本值未序列化到 Controller 模型。

这是示例的屏幕截图 Data of some field

在屏幕截图中,我将 Category & SubCatOne 字段设置为 null。但是active、SubCatTwoName 和File 字段已收到值。我想在 Controller 模型对象中获取 Category & SubCatOne 值。我怎样才能做到这一点。

最佳答案

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

formData.append('Category.CategoryId', self.selectCategory());

关于javascript - 表单数据未在 asp.net core mvc Controller 模型中序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43533820/

相关文章:

javascript - 如何将数据附加到不同的div

php - 无需离开页面/网站即可提交外部表单

javascript - GraalVM:禁止从脚本调用某些类的方法

javascript - 使用 javascript 设置 Coldfusion 变量以便在同一页面上的 Replace() 中使用?

javascript - querySelector() 未修改 &lt;input&gt; 标记中的 value、onblur 或 onfocus 的问题

c# - 将字符串格式化为日期

c# - 100 分钟后 websphere mq 客户端主题静默访问错误

javascript - 需要 JS 图像事件监听器在 html5 Canvas 上绘制多个图像的帮助

c# - C# 生成的 Outlook 电子邮件中的换行符/回车符

jQuery - 动态 div 高度