I'm working with ASP.NET MVC and have a problem with the value sent from Ajax to my controller.
Let's say I have SampleViewModel like this:
public class SampleViewModel
{
    private string _firstName = string.Empty;
    public SampleViewModel()
    {
        _firstName = string.Empty;
    }
    public string FirstName
    {
        get { return _firstName; }
        set { _firstName = value ?? string.Empty; }
    }
    public string LastName { get; set; }
    public string FullName { get; set; }
}
Controller
[HttpPost]
public JsonResult ActionSubmit(SampleViewModel model)
{               
    var result = "";
    if(model.FirstName == null)
          result += "\nFirstName is null";
    if(model.LastName == null)
          result += "\nLastName is null";
    return Json(result);
}
Ajax
$('.submit').click(function() {
        $.ajax({
            url: '@Url.RouteUrl(new{ action="ActionSubmit", controller="Home"})',
            data: JSON.stringify({ FirstName: '', LastName: '', FullName: 'Phong_Nguyen' }),
                  // Even though I use { FirstName: '', LastName: '', FullName: 'Phong_Nguyen' } without JSON.stringify
            type: 'POST',
            dataType: 'json',
            contentType: "application/json; charset=utf-8",
            success: function(resp) {
                   alert(resp);
            }});
         });
As you can see, I send empty value but on the controller's end, I get null (the response value always "LastName is null"):

Question
- Why is it that when in Ajax I am sending - empty, I get- nullvalue in my controller?
- Is there a better way and more elegant to resolve my problem like below? 
public string FirstName
{
   get { return _firstName; }
   set { _firstName = value ?? string.Empty; }
}
 
     
     
    