Die ModelState-Validierung schlägt für nullfähige Typen fehl

Die ModelState-Validierung kann in der WebApi-Anwendung für Objekte, die nullfähige Typen enthalten und Nullwerte aufweisen, nicht bestanden werden. Die Fehlermeldung lautet "Der Wert 'null' ist für DateProperty nicht gültig."

Der Code des Objekts:

public class TestNull
{
    public int IntProperty { get; set; }
    public DateTime? DateProperty { get; set; }
}

Regler:

public class TestNullController : ApiController
{
    public TestNull Get(int id)
    {
        return new TestNull() { IntProperty = 1, DateProperty = null };
    }

    public HttpResponseMessage Put(int id, TestNull value)
    {
        if(ModelState.IsValid)
            return Request.CreateResponse(HttpStatusCode.OK, value);
        else
        {
            var errors = new Dictionary<string, IEnumerable<string>>();
            foreach (var keyValue in ModelState)
            {
                errors[keyValue.Key] = keyValue.Value.Errors.Select(e => e.ErrorMessage);
            }

            return Request.CreateResponse(HttpStatusCode.BadRequest, errors);
        }
    }
}

Anfordern:

$.getJSON("api/TestNull/1",
function (data) {
    console.log(data);
    $.ajax({
        url: "api/TestNull/" + data.IntProperty,
        type: 'PUT',
        datatype: 'json',
        data: data
    });
});

Antworten auf die Frage(1)

Ihre Antwort auf die Frage