MVC3 - affichage du tableau d'octets à un contrôleur de la Base de données RowVersion

Je suis en train de travailler sur un MVC3 application. De mon côté client ViewModel contient un Serveur SQL server RowVersion de la propriété, qui est un byte[]. Il est rendu sous la forme d'un tableau d'Objets sur le côté client. Lorsque j'essaie de poster mon point de vue, le modèle de l'automate, de la RowVersion propriété est toujours null.

Je suis en supposant que le Contrôleur sérialiseur (JsonValueProviderFactory), c'est ignorer le tableau d'Objets de la propriété.

J'ai vu ce blog, cependant, cela ne s'applique pas, comme je suis annonce JSON et non pas sur la forme de balisage:
http://thedatafarm.com/blog/data-access/round-tripping-a-timestamp-field-with-ef4-1-code-first-and-mvc-3/

Mon avis le rend mon viewmodel de la sorte:

<script type="text/javascript">
  var viewModel = @Html.Raw( Json.Encode( this.Model ) );
</script>

J'ai ensuite post le viewModel pour le contrôleur comme suit:

    var data = {
        'contact': viewModel
    };

    $.ajax({
        type: 'POST',
        url: '/Contact/Save',
        contentType: "application/json; charset=utf-8",
        data: JSON.stringify(data),
        dataType: 'json',
        success: function (data) {
            //Success
        },
        error: function (XMLHttpRequest, textStatus, errorThrown) {
            alert(XMLHttpRequest.responseText);
        }
    });

Voici mon action dans le contrôleur:

  [HttpPost]
  public JsonResult Save(Contact contact) {
     return this.Json( this._contactService.Save( contact ) );
  }

Mise à JOUR: basé sur Darin réponse.

J'espérais une solution plus propre, mais depuis Darin fourni la seule réponse, je vais devoir ajouter une propriété personnalisée qui va sérialiser mon byte[] "row_version" de la propriété à une chaîne Base64. Et quand le Base64 chaîne est définie à la nouvelle propriété personnalisée, il convertit la chaîne vers un byte[]. Ci-dessous est la coutume "RowVersion" bien que j'ai ajouté à mon modèle:

  public byte[] row_version {
     get;
     set;
  }

  public string RowVersion {
     get {

        if( this.row_version != null )
           return Convert.ToBase64String( this.row_version );

        return string.Empty;
     }
     set {

        if( string.IsNullOrEmpty( value ) )
           this.row_version = null;
        else
           this.row_version = Convert.FromBase64String( value );
     }
  }
  • Hey, vous pouvez poster votre action de contrôleur de code?
  • Hey @Darin Dimitrov, Pouvez-vous ajouter le serialization tag?
  • Je l'ai ajouté.
  • Dimitrov, Bien fait!
  • Voir. Une question similaire sur DONC
  • Tocco - ajout de jQuery.ajaxSettings.traditionnelle n'a pas aidé