Error assigning null to a nullable int - “The value 'null' is not valid for property”

后端 未结 6 768
耶瑟儿~
耶瑟儿~ 2020-12-28 16:50

I have this property in my view model:

[DisplayName(\"Region\")]
public int? RegionId { get; set; }

I pass my view model to my controller,

6条回答
  •  -上瘾入骨i
    2020-12-28 17:29

    Here's another possible explanation.

    I am AJAX POSTing to an MVC action method using jQuery like so:

    $.post('url/here',dataObject);
    

    jQuery will turn the data object into a query string. I use the default model binder to push the values into my ViewModel. Model validation fails with "The value 'null' is not valid for field name". But the property is a nullable int. After inspecting the raw POST I find that the data object I am POSTing is serialized into a query string that looks like this:

    Field1=null&Field2=value&Field3=value
    

    and not this:

    Field1=&Field2=value&Field3=value
    

    So model validation is understandably complaining about assigning the string literal 'null' to my nullable int. One solution is to check for NULLs before POSTing. I wish I had time to dig in more but I just switched to sending a JSON representation of the data object which correctly handles the null values.

提交回复
热议问题