2016-09-13 18 views
2

jnet文字列をその正しい型に変換しようとしているので、それをdotnetbrowserブリッジを介してJavaScriptメソッドに渡すことができますそれはjsonオブジェクトを期待しています。DotNetBrowser:json文字列を.Netからjsonオブジェクトを受け入れるJavaScript関数に渡す

.NETでの私の既存のコードはそうのようなニュートン・ソフト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; 

私は、Webページからの私のGoogleマップのオブジェクトを撮影してきました:

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はnullです。 jsonオブジェクトに変換できる.net json文字列を取得するにはどうすればよいですか?

答えて

2

残念ながら、現在のバージョンでは、プリミティブ型(数値、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); 
関連する問題