相关疑难解决方法(0)

ModelState.IsValid即使它不应该是?

我有API需要验证我的用户模型.我选择一种方法,为创建/编辑操作创建不同的类,以避免质量分配和划分验证和实际模型分开.

我不知道为什么,但ModelState.IsValid即使它不应该返回真实.难道我做错了什么?

调节器

public HttpResponseMessage Post(UserCreate user)
{
    if (ModelState.IsValid) // It's valid even when user = null
    {
        var newUser = new User
        {
            Username = user.Username,
            Password = user.Password,
            Name = user.Name
        };
        _db.Users.Add(newUser);
        _db.SaveChanges();
        return Request.CreateResponse(HttpStatusCode.Created, new { newUser.Id, newUser.Username, newUser.Name });
    }
    return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState);
}
Run Code Online (Sandbox Code Playgroud)

模型

public class UserCreate
{
    [Required]
    public string Username { get; set; }
    [Required]
    public string Password { get; set; }
    [Required]
    public string Name { get; set; …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-web-api

64
推荐指数
4
解决办法
5万
查看次数

ModelState对null模型有效

我有一个具有必需属性的Model对象

 public class ApiPing
    {
        [Required]
        public DateTime ClientTime { get; set; }

        public DateTime ServerTime { get; set; }
    }
Run Code Online (Sandbox Code Playgroud)

我有一个控制模型状态的Controller方法.

   public IHttpActionResult Ping(ApiPing model)
    {    
        if (!ModelState.IsValid)
            return BadRequest(ModelState);

        model.ServerTime = DateTime.UtcNow;

        return Ok(model);
    }
Run Code Online (Sandbox Code Playgroud)

如果我向action方法提交了一个正确的请求(带有模型),我会从ModeState.IsValid(true)中获得正确的值.但是,当我提交无效请求(没有模型,因此模型为null)时,我得到一个错误的ModelState.IsValid(也是true).

我可以简单地检查一下我的代码中的模型是否为null,但这有气味.这是一个预期的"功能"还是ModelState验证中的错误?难道我做错了什么 ?我期待太多了吗?

c# asp.net-web-api

38
推荐指数
2
解决办法
3万
查看次数

标签 统计

asp.net-web-api ×2

c# ×2