Pase el objeto de JSON al controlador MVC: ¿siempre es nulo?

He visto algunas preguntas aquí relacionadas con un problema similar, las he leído, las sigo, pero aún tengo el mismo problema.

Básicamente estoy creando un objeto en javascript y tratando de llamar a un método en el controlador que devolverá una cadena de html. No JSON

He estado jugando con dataType y contentType pero todavía no me alegro. Entonces, disculpas si los fragmentos de código son un poco desordenados.

Construye el objeto en JS.

function GetCardModel() {
    var card = {};
    card.CardTitle = $("#CardTitle").val();
    card.TopicTitle = $("#TopicTitle").val();
    card.TopicBody = $("#TopicBody").data("tEditor").value();
    card.CardClose = $("#CardClose").val();
    card.CardFromName = $("#CardFromName").val();
    return card;
}

Eche un vistazo al objeto: todo se ve bien y como debería en JSON.

var model = GetCardModel();
alert(JSON.stringify(GetCardModel()));

Haz la llamada...

$.ajax({
            type: "POST",
            url: "/Postcard/Create/Preview/",
            dataType: "json",
            //contentType: "application/json",
            data: GetCardModel(),
            processData: true,
            success: function (data) {
                alert("im back");
                alert(data);
            },
            error: function (xhr, ajaxOptions, error) {
                alert(xhr.status);
                alert("Error: " + xhr.responseText);
                //alert(error);
            }
        });

Siempre cuando entro en el controlador, el objeto SIEMPRE está allí, pero con valores nulos para todas las propiedades.

Respuestas a la pregunta(1)

Su respuesta a la pregunta