繁体   English   中英

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

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

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:

{
    "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 动作签名:

public async Task<JsonResult> AddText(AdminText newText)

model的每个属性都是null,这是为什么呢?

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].这是一个演示工作: 控制器:

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

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
}

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

暂无
暂无

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

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