javascript - knockout 映射 c# 模型到 knockout 模型,将 C# 代码解析为 json 不起作用

标签 javascript c# json knockout.js asp.net-core

c#代码无法解析为json格式

var model = ko.mapping.fromJS(ko.mapping.fromJSON('@Html.Raw(JsonConvert.SerializeObject(this.Model))'));

错误:

VM444:1 Uncaught SyntaxError: Unexpected token 
 in JSON at position 375
    at JSON.parse (<anonymous>)
    at Object.kd (knockout.js:21)
    at Object.f.fromJSON (knockout-mapping.js:17)
    at (index):58

JSON 响应:

{"Selection":"3e67e70f-af0e-41d8-ba6e-cb8c4f8487a2","CurrentSnippet":{"SnippetId":0,"Name":null,"Description":null,"Code":null,"Modified":"0001-01-01T00:00:00"},"Snippets":[{"SnippetId":11,"Name":"asd","Description":"sdasd","Code":null,"Modified":"8/13/17 9:59:10 PM"},{"SnippetId":12,"Name":"Standard","Description":"Standard Console Program","Code":"namespace TestProject {
    static class Program {
        static void Main(string[] args) {
            return 0;
        }
    }
}
","Modified":"8/13/17 10:04:17 PM"}]}

如何将 json 字符串中的 C# 代码显示为字符串,而不是对象

我的模型:

using System;
using System.Collections.Generic;
using VoidProvider.Models.VoidModels;

    namespace VoidProvider.Models.SnippetViewModels
    {
        public class ViewModelSnippets
        {
            public Guid Selection { get; set; }
            public Snippet CurrentSnippet { get; set; }
            public List<ViewModelSnippet> Snippets { get; set; }
        }
    }

ViewModelSnippet 模型:

using System;

namespace VoidProvider.Models.SnippetViewModels {
    public class ViewModelSnippet {
        public int SnippetId { get; set; }
        public string Name { get; set; }
        public string Description { get; set; }
        public string Code {get; set;}
        public string Modified { get; set; }
    }
}

最佳答案

我认为你的语法不正确。

您应该在 Controller 中序列化您的模型。

var jsonString = JsonConvert.SerializeObject(ViewModelSnippets);
return jsonString;

并相应地绑定(bind)。

var viewModel =  {
        Snippet: ko.observableArray()
    };

//Ajax Call
viewModel.Snippet= ko.mapping.fromJS(data);
ko.applyBindings(viewModel, document.getElementById("snippet"));

<div id="snippet">
<span data-bind="foreach: Snippets">
<span data-bind="text: code"></span>
</span>
</div>

关于javascript - knockout 映射 c# 模型到 knockout 模型,将 C# 代码解析为 json 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45664622/

相关文章:

c# - 用于测试的 IHostingEnvironment

iOS SWIFT - NSJSONSerialization 后的 JSON 对象为 nil

javascript - 如何在 React 组件的 read.onloadend 中访问 'this' ?

javascript - 什么是 HTML DOM #text 元素?

javascript - 如何构造这个新逻辑以适应预先存在的代码?

c# - 谁能解释这种终结行为

c# - 将 C# 动态对象序列化为 JSON 对象以供 javascript 使用

javascript - 如何让 jQuery .get 返回 JSON 数据?

javascript - 在 Prop 中提取对象

javascript - JavaScript 中的 Promise 问题