【问题标题】:How to use Knockout.js in asp.net mvc Razor correctly and sufficiently?如何正确、充分地在 asp.net mvc Razor 中使用 Knockout.js?
【发布时间】:2013-02-01 12:31:39
【问题描述】:

我尝试在 asp.net mvc razor 上学习 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 的回复:

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>

【问题讨论】:

标签: asp.net-mvc razor knockout.js asp.net-mvc-viewmodel


【解决方案1】:

根据错误信息

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

和页面设置你的问题是你试图使用 KO mapping 插件而不包括插件。

所有带有ko.mapping 的字符串方法都是映射插件的一部分,要使用它们,您需要在HTML 页面中引用knockout.mapping.js 文件。

可以从github下载地图插件吗

【讨论】:

    猜你喜欢
    • 2012-09-22
    • 2014-03-15
    • 1970-01-01
    • 1970-01-01
    • 2020-06-26
    • 2018-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多