Tôi đã sao chép vấn đề tôi đang gặp trong một dự án API MVC Web API hoàn toàn mới.ModelState.IsValid là sai khi tôi có tham số nullable
Đây là mã mặc định có sửa đổi nhỏ.
public string Get(int? id, int? something = null)
{
var isValid = ModelState.IsValid;
return "value";
}
Nếu bạn đi đến http://localhost/api/values/5?something=123
thì đây hoạt động tốt, và isValid là true
.
Nếu bạn truy cập http://localhost/api/values/5?something=
thì isValid là false
.
Vấn đề tôi đang gặp là nếu bạn cung cấp một giá trị null hay bỏ qua cho một mục đó là nullable, cờ ModelState.IsValid một lỗi xác nhận nói "A value is required but was not present in the request."
Từ điển ModelState cũng trông như thế này:
với hai mục nhập cho something
, một giá trị không thể xác định được, tôi không chắc liệu nó có quan trọng hay không.
Bất kỳ ý tưởng nào về cách tôi có thể sửa lỗi này để mô hình hợp lệ khi các tham số nullable bị bỏ qua hoặc được cung cấp dưới dạng null? Tôi đang sử dụng xác nhận mô hình trong api web của tôi và nó phá vỡ nó nếu mọi phương thức với tham số nullable tạo ra lỗi mô hình.
thông tin có khả năng hữu ích ở đây: http://stackoverflow.com/a/11922978/3130094 - có lẽ bạn đang nhìn thấy tình huống này vì khá hơn là bỏ qua tham số 'something' hoàn toàn bạn đang thêm nó và gán không cái gì –
Tôi đã cố gắng làm rối tung bộ nối tiếp json trong dự án ban đầu của mình, tôi không chắc chắn làm thế nào để đặt nó vào trong dự án này mặc dù tôi không làm json yêu cầu nhưng sử dụng trình duyệt (w hich tôi tin là khác nhau nhưng có thể sai?) – NibblyPig
asp.net 4.5.2 nếu điều đó giúp. Tôi đã thêm 'config.Formatters.JsonFormatter.SerializerSettings = new JsonSerializerSettings {NullValueHandling = NullValueHandling.Ignore};' để cho nó bỏ qua việc tuần tự hóa và deserialization các giá trị null nhưng điều này không làm việc. Tôi không biết nếu 'something =' được coi là 'null' hoặc' "" (chuỗi rỗng) 'mặc dù, hoặc nếu serializer này thậm chí còn được sử dụng cho các hoạt động thử nghiệm của tôi. – NibblyPig