5

I had Public declared Dictonary in code behind as :

 Public dics As New Dictionary(Of String, String()) From { _
{"picture", New String() {".jpeg", ".jpg", ".png", ".bmp", ".gif", ".tif"}}, _
{"document", New String() {".doc", ".docx", ".txt", ".htm", ".html", ".xml", ".xaml", ".css"}}, _
{"excel", New String() {".xls", ".xlsx", ".xlt", ".xla"}}, _
{"pdf", New String() {".pdf"}}, _
{"zip", New String() {".7z", ".APK", ".BAT", ".rar", ".dll", ".jar", ".zip"}}, _
{"ppt", New String() {".ppt", ".pos", ".pps"}}}

Edit :

if i do like this

function myFunction() {
       var dic = "<%= dics %>";
       var array_keys = new Array();
       var array_values = new Array();
       for (var key in dic) {
           alert(key);
        }
     }

will show alerts as this

How can i access this Dictonary in javascript to do some operations

3
  • check if this thread gives you idea to try Commented Sep 16, 2014 at 6:47
  • If the values stored in dictionary is static then you can try by declaring the js variables containing these values. Commented Sep 16, 2014 at 7:04
  • @ Priya : here the values are static that wont change dynamically Commented Sep 16, 2014 at 7:09

2 Answers 2

3
+25

For now it looks like you need to serialize dictionary into javascript object and then paste it in your JavaScript. You could use any library for serialization. E.g. Newtosoft.Json. Like this:

function myFunction() {
   var dic = <%= Newtonsoft.Json.JsonConvert.SerializeObject(dics) %>;
   var array_keys = new Array();
   var array_values = new Array();
   for (var key in dic) {
       alert(key);
    }
 }

Note that I removed quotes.

But I suggest you to get rid of this approach and not mix JavaScript and ASP.Net code. So in my vision you should load this dictionary via AJAX or if it's not possible place ASP.Net in some other place. E.g.:

View:

<input type="hidden" id="dictionaryInput" value="<%=Newtonsoft.Json.JsonConvert.SerializeObject(dics)%> />

JavaScript:

function myFunction() {
   var dicInput = document.getElementById('dictionaryInput');
   var dic = JSON.parse(dicInput.value);
   var array_keys = new Array();
   var array_values = new Array();
   for (var key in dic) {
       alert(key);
    }
 }

Hope it will help.

Sign up to request clarification or add additional context in comments.

2 Comments

this gives error as :Error 2 'Serialize' is not a member of 'System.Collections.Generic.Dictionary(Of String, String())'
Excuse me, I just have shown an idea of solution. Real method is Newtonsoft.Json.JsonConvert.SerializeObject(dics). I fixed my answer to match real method
0

You can create a property(say DictionaryConv) in your code behind, and in page load set that property value.

Dim jsz As New System.Web.Script.Serialization.JavaScriptSerializer
        DictionaryConv = jsz.Serialize(dics)

In javascript you use this function.

function myFunction() {
            var dic = <%= DictionaryConv%>;
            var array_keys = new Array();
            var array_values = new Array();
            for (var key in dic) {
                alert(key);
            }
        }

1 Comment

This is -- System.Web.Script.Serialization.JavaScriptSerializer a inbuild class in .net, so you don't need other 3rd party dll ( like Newton soft etc..)

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.