当javascript尝试解析包含从C#发送的列表的对象时,CefSharp崩溃
CefSharp crashing when javascript tries to parse an object containing a list sent from C#
我正在使用CefSharp让Web浏览器在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"
};
导致崩溃的 Obj:
TestClass tc = new TestClass()
{
name = "Bobby Test",
other = "Hello",
ints = new List<int>(){0,1}
};
我如何传递给 js 代码:
browser.RegisterJsObject("testObj", tc);
我的角度代码设置它以供使用:
$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);
为我工作
相关文章:
- 如何使用json将对象列表从java转换为javascript
- 从HTTPGET返回一个自定义对象列表,以便在Angular 2应用程序中使用
- 当属性不一致时,如何根据属性对JS对象列表进行排序
- 如何使用Javascript客户端对象模型检索Sharepoint 2010列表项权限
- 用javascript从列表对象(JSON的)构建diffrent选项卡
- 如何更改列表.js列表对象中的选项
- 如何使用变量值将列表<对象>序列化为 JSON
- 将列表对象从javascript转换为JSON
- 将对象推入对象列表对象
- 如何从列表对象生成li和锚点标记
- AngularJS-通过dons't在ng模型中设置列表对象
- 隐藏一定数量的列表对象
- 要切换的Javascript类列表对象和查询选择器
- 从动态列表对象中获取对象
- jPlayer不播放播放列表对象的全局声明中的歌曲
- Spring MVC @ResponseBody, JSON, JSP.试图返回列表<对象>从控制器到JSP
- Javascript列表对象可以'不添加JSON?node . js,重火力点
- javascript从文件列表创建文件列表对象
- 流星 - 在列表对象中呈现所有者的名称
- UndefinedError:列表对象没有未定义元素