【问题标题】:Modelstate errors not shown correctly模型状态错误未正确显示
【发布时间】:2018-10-06 17:15:22
【问题描述】:

我的 asp.net webapi2(不是核心)中的模型状态错误仅显示为:

\"\"

这是我的控制器代码:

     if (!ModelState.IsValid)
        {            
            Log.Verbose("Modelstate NOT valid");

            var errorList = JsonConvert.SerializeObject((from item in ModelState.Values
                             from error in item.Errors
                             select error.ErrorMessage).ToList());

            Log.Verbose("modelstate errors: " + errorList);
            Log.Verbose("resulting object:" + JsonConvert.SerializeObject(computerObject));
            return BadRequest("Modelstate not valid" + errorList);

        }

        Log.Verbose("Modelstate is valid");
        return (Ok("dumped + jsonitem));

我认为这在开始时有效,但现在它显示了很多无用的东西:

{
    "Message": "Modelstate not valid[\"\",\"\",\"\",\"\",\"\",
\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",
\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",
\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",
\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"
The ComputerOsClientComputer field is required.\"]" 
}

为了更好的可读性,我插入了换行符。原始结果如下所示:

{
    "Message": "Modelstate not valid[\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"The ComputerOs field is required.\"]"
}

虽然我可以肯定地看到“ComputerOs 字段是必需的”,但我不知道所有其他内容应该是什么意思:/ 一旦我解决了“ComputerOs 字段是必需的错误,其余的都留在那里。所以它必须意味着什么。

谁能赐教?

非常感谢!

史蒂芬

【问题讨论】:

  • 好吧,你没有过滤没有错误的属性,所以打印""
  • 为什么我不这样做?我不仅得到“来自 item.errors 中的错误”吗?我以为这些只是错误?即使我更正了“ComputerOsClientComputer”,modelstate 仍然显示为无效。所以必须有另一个错误,否则它应该是有效的,不是吗?
  • 我不能回答你,因为你没有发布你的模型,也没有你调用这个动作的数据

标签: c# json asp.net-web-api2


【解决方案1】:

找到了!

我的 json 请求的一部分格式不正确。

我没有在这里发布我的请求,因为它非常大,我不知道是哪个部分导致了错误。 虽然我的模型说明了这一点:

public class ComputerLocalGroups
{
    public string Groupname { get; set; }
    public int LocalGroupId { get; set; }
}

我在我的 json 请求中发送的是

{
"ComputerLocalGroupsCurrent":[{"Access Control Assistance Operators", 11}]
}

代替:

{
"ComputerLocalGroupsCurrent":[{"Groupname":"Access Control Assistance Operators", "LocalGroupId":11}]
}

很奇怪,它会导致这种“错误消息”而不是更有帮助的东西,但一开始是我的错,所以我不能抱怨:D

【讨论】:

    猜你喜欢
    • 2021-11-14
    • 1970-01-01
    • 2020-07-23
    • 2017-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多