0

私はasp.netmvcrazorでknockout.jsを学ぼうとしています。私は自分自身を学び、テストするために以下のコードをコーディングしていますが、ビュー側は私にjsエラーをスローします。

「varmodel=@ Html.Raw(Json.Encode(Model));」でエラーが発生します エラー:Microsoft JScriptランタイムエラー:'fromJSON'プロパティの値を取得できません:オブジェクトが空であるか、未定義です

コントローラー:


  [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>

しかし、私は自分のjsコードを変更しました。エラーが消えます。私は最初の使用法を理解できませんなぜ修正されないのですか?私はダリン・ディミトロフの返答を読みました:

ダリン・ディミトロフ


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

私:(うまくいっています。)


<script type="text/javascript">

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


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

</script>
4

1 に答える 1

1

エラーメッセージに基づく

'fromJSON'プロパティの値を取得できません:オブジェクトが空または未定義です

ページ設定の問題は、プラグインを含めずにKOマッピングプラグインを使用しようとしていることです。

文字列であるすべてのメソッドはマッピングプラグインの一部であり、それらを使用するには、HTMLページでファイルをko.mapping参照する必要があります。knockout.mapping.js

githubからマッピングプラグインをダウンロードできますか

于 2013-02-01T12:49:51.333 に答える