I have something wrong with either json or ASP.NET MVC, I am using ASP.NET MVC and here is what I am sending from the client.
NOTE After debugging in Chrome, I am explaining that this is what is passed within javascript, I am not manually setting State to null as it is coming as result from somewhere else as null. Which once again is not in my control as it is coming from database.
While debugging, State displays that it is null, instead of "null", but while debugging in MVC it is displaying "null" instead of null.
$.ajax(
'/Client/Post',
{
method: 'POST',
data: {
Country: 'US',
// this is null because it is coming from somewhere else as null
State: null
}
});
My ASP.NET MVC Handler receives...
public ActionResult Post(Client model){
if(model.State == "null")
{
/// this is true... !!!!
}
if(model.State == null )
{
// :( this should be true...
}
}
Is it problem of ASP.NET MVC or jQuery?
So is it jQuery that sends null as "null" or is it MVC that is setting null as "null"?
SOLUTION
I had to just recursively create new object hierarchy (cloning the object) and send it to jQuery, as jQuery sent data as Form Encoded, in which there is no way to represent null, however ideally jQuery should not have serialized null at all.
Don't send the field:
$.ajax('/Client/Post',
{
method: 'POST',
data: {
Country: 'US'
}
});
var data = {
Country: 'US',
State: null
}
if (!data.State) delete data.State;
$.ajax('/Client/Post',
{
method: 'POST',
data: data
}
});
This is the same exact principle as above FYI
jQuery does this. You can monitor the request by firebug fiddler, chrome dev helper, etc.
In this case, maybe you could use empty string instead of null
:
data: {
Country: 'US',
State: ""
}
if you have to post data than use object as jSoN see the link
To pass whole JSON objects into controller of MVC
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With