简体   繁体   English

.Net Core 2.2 绑定 - model 属性为 null

[英].Net Core 2.2 binding - model properties are null

The model I try my Json to bind to: model 我尝试将我的 Json 绑定到:

public class UserText
{
    public string Title { get; set; }
    public string Description { get; set; }
    public string Content { get; set; }
    public string MainImageStr { get; set; }
    public List<int> CategoriesIds { get; set; }
    public List<string> LocationStrList { get; set; }
}

public class AdminText : UserText
{
    
    public int Type { get; set; }
    public string KeyWords { get; set; }
    public string HomepageTitle { get; set; }
    public string HomepageDescription { get; set; }
    public string TitleAltOfImage { get; set; }
    public bool IsHomePageText { get; set; } = false;
    public int HomepageOrder { get; set; }
    public bool EnableComments { get; set; } = true;
    public bool IsMultiLanguage { get; set; } = false;
    public short LanguageType { get; set; }
    public int Status { get; set; }
}

JSON: JSON:

{
    "LocationStrList": "7_110",
    "CategoriesIds": "33",
    "TitleAltOfImage": "asdasdasdasdasdasdssss",
    "KeyWords": "asdasdasdasdasdasdssss",
    "EnableComments": "false",
    "Type": "2",
    "LanguageType": "1",
    "Status": "1",
    "IsHomePageText": "false",
    "HomepageTitle": "asdasdasdasdasdasdssss",
    "HomepageDescription": "asdasdasdasdasdasdssss",
    "HomepageOrder": "2",
    "IsMultiLanguage": "false"
}

Mvc Controller action signature: Mvc Controller 动作签名:

public async Task<JsonResult> AddText(AdminText newText)

Every Property of the model is null, why is that? model的每个属性都是null,这是为什么呢?

CategoriesIds and LocationStrList fields are of type list, you need to pass the values for those two as arrays.. CategoriesIds 和 LocationStrList 字段属于列表类型,您需要将这两个字段的值作为 arrays 传递。

{
    "LocationStrList": ["7_110"],
    "CategoriesIds": ["33"],
    "TitleAltOfImage": "asdasdasdasdasdasdssss",
    "KeyWords": "asdasdasdasdasdasdssss",
    "EnableComments": "false",
    "Type": "2",
    "LanguageType": "1",
    "Status": "1",
    "IsHomePageText": "false",
    "HomepageTitle": "asdasdasdasdasdasdssss",
    "HomepageDescription": "asdasdasdasdasdasdssss",
    "HomepageOrder": "2",
    "IsMultiLanguage": "false"
}

The data type of your List,int,bool is string in your json.So you need to change the data type in json.And in mvc,if you want to pass json data to controller,you need to use [From Body].Here is a demo worked: Controller: The data type of your List,int,bool is string in your json.So you need to change the data type in json.And in mvc,if you want to pass json data to controller,you need to use [From Body].这是一个演示工作: 控制器:

[HttpPost]
        public async Task<JsonResult> AddText([FromBody]AdminText newText) {
            return Json("ok");
        }

JsonData: json数据:

{"LocationStrList": ["7_110"],
    "CategoriesIds": [33],
    "TitleAltOfImage": "asdasdasdasdasdasdssss",
    "KeyWords": "asdasdasdasdasdasdssss",
    "EnableComments": false,
    "Type": 2,
    "LanguageType": 1,
    "Status": 1,
    "IsHomePageText": false,
    "HomepageTitle": "asdasdasdasdasdasdssss",
    "HomepageDescription": "asdasdasdasdasdasdssss",
    "HomepageOrder": 2,
    "IsMultiLanguage": false
}

result:结果: 在此处输入图像描述

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM