2016-01-04 18 views
7

Tôi đã nhìn thấy rất nhiều bài viết về IsValid luôn đúng nhưng không ai trong số họ đã giúp tôi giải quyết vấn đề này. Tôi cũng thấy vấn đề này trong ASP.NET 4 sử dụng MVC5. Vì vậy, rõ ràng tôi đang thiếu một bước nào đó.ASP.NET 5, MVC6, WebAPI -> ModelState.IsValid luôn trả về true

điều khiển phương pháp:

public IHttpActionResult Post([FromBody]ValuesObject value) 
{ 
    if (ModelState.IsValid) 
    { 
     return Json(value); 
    } 
    else 
    { 
     return Json(ModelState); 
    } 
} 

ValuesObject Class:

public class ValuesObject 
{ 
    [Required] 
    public string Name; 

    [Range(10, 100, ErrorMessage = "This isn't right")] 
    public int Age; 
} 

Body của POST:

{ 
    Age: 1 
} 

ModelState.IsValid là đúng.

Nhưng tôi mong đợi cả các yêu cầu Xác thực và Phạm vi không thành công.

Tôi đang thiếu gì ??

Cảm ơn,

Kevin

Trả lời

13

Bạn không thể sử dụng trường trong mô hình của bạn. đó là one of general conditions để xác thực của bạn.

Trong ASP.NET Web API, bạn có thể sử dụng các thuộc tính từ không gian tên System.ComponentModel.DataAnnotations để thiết lập xác nhận quy tắc cho tính trên mô hình của bạn.

Thay thế nó với tính chất và tất cả sẽ làm việc tốt:

public class ValuesObject 
{ 
    [Required] 
    public string Name { get; set; } 

    [Range(10, 100, ErrorMessage = "This isn't right")] 
    public int Age { get; set; } 
} 
+0

Cảm ơn bạn đã cặp thêm mắt nhìn thấy điều đó! – retsvek

Các vấn đề liên quan