繁体   English   中英

如何正确,充分地在asp.net mvc Razor中使用Knockout.js?

[英]How to use Knockout.js in asp.net mvc Razor correctly and sufficiently?

我尝试在asp.net mvc剃须刀上学习knockout.js。 我一直在编码下面的代码来学习和测试自己,但是View方面向我抛出了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代码。 错误消失。 我不明白为什么第一次使用不正确? 我读了达林·迪米特罗夫的回应:

达林·迪米特罗夫Darin Dimitrov)


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

根据错误信息

'fromJSON'无法获取属性值:对象为空或未定义

和页面设置,您的问题是您尝试使用KO映射插件而不包含该插件。

所有这一切都是字符串的方法ko.mapping是映射插件的一部分,并使用它们,你需要refeence的knockout.mapping.js文件中的HTML页面。

你可以从github下载映射插件吗

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM