使用javascript访问前端的后端变量

5 javascript vb.net asp.net dictionary

Dictonary在代码后面声明了Public :

 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"}}}
Run Code Online (Sandbox Code Playgroud)

编辑:

如果我喜欢这个

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

将显示警报 这个

我如何才能获得这个Dictonaryjavascript做一些操作

Aga*_*her 3

现在看来您需要将字典序列化为 javascript 对象,然后将其粘贴到 JavaScript 中。您可以使用任何库进行序列化。例如Newtosoft.Json。像这样:

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);
    }
 }
Run Code Online (Sandbox Code Playgroud)

请注意,我删除了引号。

但我建议您放弃这种方法,不要混合 JavaScript 和 ASP.Net 代码。因此,在我看来,您应该通过 AJAX 加载此字典,或者如果不可能,请将 ASP.Net 放置在其他位置。例如:

看法:

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

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);
    }
 }
Run Code Online (Sandbox Code Playgroud)

希望它会有所帮助。