2013-02-01 3 views
0

J'essaie d'apprendre knockout.js sur asp.net mvc rasoir. J'ai codé sous le code pour apprendre et me tester Mais le côté View me jette une erreur js.Comment utiliser Knockout.js dans asp.net mvc Razor correctement et suffisamment?

Une erreur se produit sur "var model = @ Html.Raw (Json.Encode (Model));" Erreur: Microsoft JScript erreur d'exécution: « fromJSON » Impossible d'obtenir la valeur de la propriété: l'objet est

Contrôleurs vides ou non définis:


    [HttpGet] 
     public ActionResult GetGift() 
     { 
      GiftModel gift = new GiftModel(); 
      gift.Price = 120; 
      gift.Title = "Test"; 

      return View(gift); 
     } 

View:  

@using System.Web.Script.Serialization; 
@model knockout1.Models.GiftModel 

@{ 
    ViewBag.Title = "GetGift"; 
} 

<h2>GetGift</h2> 

<script src="/Scripts/knockout-2.1.0.js" type="text/javascript"></script> 


<script type="text/javascript"> 

var initialData = @Html.Raw(new JavaScriptSerializer().Serialize(Model)); 

var viewModel = ko.mapping.fromJSON(initialData); 

    $(document).ready(function() { ko.applyBindings(viewModel); }); 
    </script> 



<p>Title: <strong data-bind="text: Title"></strong></p> 
<p>Price: <strong data-bind="text: Price"></strong></p> 

Mais j'ai changé mes codes js. L'erreur disparaît. Je ne peux pas comprendre la première utilisation pourquoi ne corrige pas? i readed la réponse de Darin Dimitrov:

Darin Dimitrov:


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

Me: (il fonctionne bien.)


<script type="text/javascript"> 

    $(function() 
    { 
     var model = @Html.Raw(Json.Encode(Model)); 


// Activates knockout.js 
ko.applyBindings(model); 
    }); 

</script> 
+1

Pouvez-vous s'il vous plaît poster le message d'erreur exact? Afin d'utiliser le 'ko.mapping.fromJSON' vous devez faire référence au plugin ko mapping http://knockoutjs.com/documentation/plugins-mapping.html – nemesv

+0

Erreur d'exécution Microsoft JScript: 'fromJSON' Impossible d'obtenir la valeur de la propriété: l'objet est vide ou non défini J'ai CHANGÉ sur mon Que. – programmerist

+1

Ouais, maintenant basé sur le message d'erreur, il manque définitivement une référence de script au plugin de mapping. Vous pouvez télécharger ici: https://github.com/SteveSanderson/knockout.mapping/tree/master/build/output les versions min et debug. – nemesv

Répondre

1

Basé sur le message d'erreur

'fromJSON' Unable to get value of the property: the object is empty or undefined

et configuration Page votre problème est que vous essayez d'utiliser le plugin KO mapping sans inclure e plugin.

Toutes les méthodes qui sont la chaîne avec ko.mapping font partie du plugin de cartographie et pour les utiliser vous devez référencer le fichier knockout.mapping.js dans votre page HTML.

Pouvez-vous pouvez télécharger le plugin mapping de github