【问题标题】:.Net Core 2.2 binding - model properties are null.Net Core 2.2 绑定 - 模型属性为空
【发布时间】:2020-07-30 14:31:28
【问题描述】:

我尝试将我的 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 控制器动作签名:

public async Task<JsonResult> AddText(AdminText newText)

模型的每个属性都是空的,这是为什么呢?

【问题讨论】:

    标签: c# asp.net-mvc asp.net-core .net-core


    【解决方案1】:

    CategoriesIds 和 LocationStrList 字段属于列表类型,您需要将这两个字段的值作为数组传递..

    {
        "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"
    }
    

    【讨论】:

      【解决方案2】:

      你的List,int,bool的数据类型是你json中的字符串。所以你需要改变json中的数据类型。而在mvc中,如果你想将json数据传递给控制器​​,你需要使用[From Body].这里是一个演示: 控制器:

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

      JsonData:

      {"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
      }
      

      结果:

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-06-15
        • 2019-10-03
        • 2019-07-31
        • 1970-01-01
        • 2022-06-11
        • 1970-01-01
        相关资源
        最近更新 更多