javascript - 当 javascript 尝试解析包含从 C# 发送的列表的对象时,CefSharp 崩溃

标签 javascript c# angularjs cefsharp

我正在使用 CefSharp 让网络浏览器在 winforms 应用程序中运行 angularjs 代码。

我能够将 c# 对象发送到 js 端,然后在它们仅包含字符串、整数等时使用它们。但是,当我尝试发送一个包含值列表的对象时,CefSharp 在尝试在 js 端解析它时崩溃。

C# 代码示例:

public class TestClass
{
    public string name { get; set; }
    public string other { get; set; }
    public List<int> ints { get; set; } 
}

工作对象:

TestClass tc = new TestClass()
{
    name = "Bobby Test",
    other = "Hello"
};

导致崩溃的对象:

TestClass tc = new TestClass()
{
    name = "Bobby Test",
    other = "Hello",
    ints = new List<int>(){0,1}
};

我如何传递给js代码:

browser.RegisterJsObject("testObj", tc);

我的 Angular 代码设置它以供使用:

$scope.$watch(function ()
{ return window.testObj },
function () {
    $scope.someField = window.testObj;
});

我尝试在传递对象之前对对象执行 JsonConvert.SerializeObject,但它最终在 js 端只是一个空对象。

编辑 - 解决方案

C# 到 JS:

将测试类更改为:

TestClass tc = new TestClass()
{
    name = "Bobby Test",
    other = "Hello",
    ints = new int[] {0,1}
};

并且它可以与上面的代码一起正常工作,而无需直接调用任何序列化或反序列化方法。

JS 到 C#:

虽然这不是我的问题:

我将一个对象传递给带有回调函数的 js 端到 c#,回调函数接受来自 js 端的序列化字符串,然后我在 c# 端反序列化。

最佳答案

Chromium 只能处理 javascript 的简单类型(数组、数字、字符串等)

我通常在服务器端处理任何复杂数据时返回一个 JSON 字符串:

JavaScriptSerializer().Serialize(myObject);

然后在客户端使用

JSON.parse(myObjectAsString);

对我有用

关于javascript - 当 javascript 尝试解析包含从 C# 发送的列表的对象时,CefSharp 崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35235262/

相关文章:

angularjs - 使 "datetime-local"类型的 html5 输入字段与 Firefox 兼容

javascript - 将函数调用请求排队 javascript

javascript - 根据选择将数据记录到控制台

c# - 使用 SqlBulkCopy 填充非常大的表的最佳方法是什么?

c# - .NET TCP 服务器删除连接

angularjs - 使用 "controller as"时如何对编译模板进行单元测试?

javascript - 有什么好的 javascript eclipse 插件吗?

javascript - 尝试从不同邮政编码获取推文时出现问题

javascript - 如何遍历由 Object.defineProperty 创建的对象属性

c# - 分配 bool 值? bool