Как правильно и достаточно использовать Knockout.js в asp.net mvc Razor?

я пытаюсь изучить Knockout.js на бритве asp.net mvc. Я кодировал ниже код, чтобы учиться и тестировать себя, но сторона просмотра выдает мне ошибку js.

Ошибка возникает на «var model = @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>

person loki    schedule 01.02.2013    source источник
comment
Не могли бы вы опубликовать точное сообщение об ошибке? Чтобы использовать ko.mapping.fromJSON, вам нужно сослаться на плагин ko mapping knockoutjs.com/documentation/plugins- сопоставление.html   -  person nemesv    schedule 01.02.2013
comment
Ошибка времени выполнения Microsoft JScript: «fromJSON» Невозможно получить значение свойства: объект пуст или не определен. Я ИЗМЕНИЛ в своей очереди.   -  person loki    schedule 01.02.2013
comment
Да, теперь, судя по сообщению об ошибке, у нас определенно отсутствует ссылка скрипта на подключаемый модуль сопоставления. Скачать можно отсюда: github.com/SteveSanderson/knockout.mapping/ tree/master/build/ как минимальная, так и отладочная версия.   -  person nemesv    schedule 01.02.2013


Ответы (1)


На основании сообщения об ошибке

'fromJSON' Невозможно получить значение свойства: объект пуст или не определен

и настройка страницы, ваша проблема заключается в том, что вы пытаетесь использовать плагин KO mapping без включения плагин.

Все методы, которые представляют собой строку с ko.mapping, являются частью плагина сопоставления, и для их использования вам необходимо ссылаться на файл knockout.mapping.js на вашей HTML-странице.

Можете ли вы загрузить плагин сопоставления с github

person nemesv    schedule 01.02.2013