DotNetBrowser:从.net传递一个json字符串给一个接受json对象的JavaScript函数



我正试图将。net中的json字符串转换为正确的类型,以便我可以通过dotnetbrowser桥将其传递给期望json对象的JavaScript方法。

我在。net中的现有代码创建了一个newton-soft json对象,如下所示:

JObject obj = new JObject();
obj["src"] = image;
obj["width"] = imageViewModel.Width.Equals(0) ? 64 : imageViewModel.Width;
obj["height"] = imageViewModel.Height.Equals(0) ? 64 : imageViewModel.Height;

我已经捕获了我的谷歌地图对象从网页:

    public void setGooleMap(JSObject map) {
        CompositionRoot.Invoke(() => {
            googleMap = map;
            foreach (var marker in cachedMarkers) {
                AddMarker(marker);
            }
        });
    }
    private JSObject googleMap;

现在我想传递一个地图标记对象到googleMap对象上的函数:

public void AddMarker(JObject marker) {
//JSObject obj = JSObject.Create(marker.ToString()) as JSObject;
googleMap.GetProperty("addMarker").AsFunction().Invoke(googleMap, marker.ToString());
}

我更喜欢像这样传递"obj":

googleMap.GetProperty("addMarker").AsFunction().Invoke(googleMap, obj);

在此代码中,obj为空。我如何得到。net json字符串转换为json对象,我可以传递?

不幸的是,当前版本只支持基本类型(数字、bool和字符串)从。net对象到JS对象的自动转换。

如果你想传递一个非原语值,你应该从它创建一个JSObject或JSONString对象,例如:

JSObject obj  = browser.GetJavaScriptContext().CreateObject();
obj.SetProperty("src", image);
obj.SetProperty("width", imageViewModel.Width.Equals(0) ? 64 : imageViewModel.Width);
obj.SetProperty("height", imageViewModel.Height.Equals(0) ? 64 : imageViewModel.Height);

相关内容

  • 没有找到相关文章

最新更新