я пытаюсь изучить 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>
ko.mapping.fromJSON
, вам нужно сослаться на плагин ko mapping knockoutjs.com/documentation/plugins- сопоставление.html - person nemesv   schedule 01.02.2013