【问题标题】:DotNetBrowser : passing a json string from .Net to a JavaScript function accepting a json objectDotNetBrowser:将 .Net 中的 json 字符串传递给接受 json 对象的 JavaScript 函数
【发布时间】:2017-01-21 05:45:49
【问题描述】:

我正在尝试将 .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 对象?

【问题讨论】:

    标签: javascript json dotnetbrowser


    【解决方案1】:

    不幸的是,当前版本仅支持基本类型(数字、布尔值和字符串)从 .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);
    

    【讨论】:

      猜你喜欢
      • 2018-08-25
      • 2018-11-25
      • 1970-01-01
      • 2011-02-12
      • 1970-01-01
      • 2019-11-16
      • 1970-01-01
      • 2018-10-10
      • 1970-01-01
      相关资源
      最近更新 更多