title: AJAX Passing JSON to Controller as String Returns Null
body: <p>I have the following AJAX call, simplified to try and pin point the problem:</p>
  
  <pre><code>$('#userUpdateForm').submit(function (e) {
              $.ajax({
                  type: "POST",
                  url: '@Url.Action("submitForm", "Home")',
                  data: JSON.stringify({
                      'blue': window.glbBlue,
                      'eg2': 'eg3'
                  }),
                  contentType: "application/json; charset=utf-8",
                  success: function (result) {
                      alert("Success");
                  },
                  error: function (result) {
                      alert("A problem occured when submitting the form.");
                  }
              });
          e.preventDefault();
  
          });
  </code></pre>
  
  <p>This calls into the following method:</p>
  
  <pre><code>[HttpPost]
      public ActionResult submitForm(string json)
      {
          System.Diagnostics.Debug.WriteLine("made it here");
  
          var check = System.Web.Helpers.Json.Decode(json);
  
          System.Diagnostics.Debug.WriteLine(check);
          System.Diagnostics.Debug.WriteLine(check.glbBlue);
  
          return View();
      }     
  </code></pre>
  
  <p>However, the JSON the controller receives is null. Why does this happen? I can see in the browser that there is a request payload, with the values I'd expect. 'Window.glbBlue' is a global value, which I also know has been set properly as alerts were used to check its value.    </p>