2017-05-01 46 views
1

如何将C#变量设置为数组的JavaScript数组变量。 正在关注choices是数组变量。 m_lines是c#数组变量。如何从asp.net中的C#变量设置javascript变量?

<script type="text/javascript"> 
    $(document).ready(function() { 
       term = term.toLowerCase(); 
       var choices = []; 
        choices = '<%= m_lines %>'; 
       //var choices = ['aaaab', 'ActionScript', 'AppleScript', 'Asp', 'Assembly', 'BASIC', 'Batch', 'C', 'C++', 'CSS', 'Clojure', 'COBOL', 'ColdFusion', 'Erlang', 'Fortran', 'Groovy', 'Haskell', 'HTML', 'Java', 'JavaScript', 'Lisp', 'Perl', 'PHP', 'PowerShell', 'Python', 'Ruby', 'Scala', 'Scheme', 'SQL', 'TeX', 'XML']; 
    }); 
</script> 

我的实际需求是读取一个大的文本文件(大小约3 MB)并将其分配给JavaScript数组变量。我无法从客户端读取文件并将其分配给JavaScript变量,因此在服务器端读取并尝试将其分配给客户端变量。 文件的每一行都被用作数组项。

+0

这是什么* *目前生产?什么是'm_lines'? – David

+0

@David m_lines是c#数组变量。 –

+0

考虑到你的要求是在客户端上消耗3 MB的数据,我会使用'$ .ajax'来获取数组... – maxbeaudoin

回答

1

在关于这个问题的评论,你定义m_lines数组。这里的一个方法可以是简单的数组序列化到JSON:

choices = <%= JsonConvert.SerializeObject(m_lines) %>; 

这使用the Newtonsoft JSON.NET library是当然的。否则,您也可以使用JavaScriptSerializer(在System.Web.Script.Serialization)。

+0

如何在客户端使用JsonConvert?它给出错误JsonConvert在当前上下文中不存在 –

+0

@viveknuna:你不使用它在客户端,你使用它在服务器端。具体而言,您在问题中要求和证明什么。我不确定如何在Web窗体视图代码中包含名称空间,但您始终可以显式引用完整的名称空间:'Newtonsoft.Json.JsonConvert.SerializeObject(m_lines)'自然地,您需要对该库的引用来使用它当然。 – David

1

试试这个 -

var choices = <% if (m_lines!= null) {Response.Write(m_lines.ToString());}%> 
0

以从您的示例脚本,这可能是:

<script type="text/javascript"> 
$(document).ready(function() { 

    term = term.toLowerCase(); 
    var choices = []; 
    choices = <%= new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(m_lines) %>; 
    //var choices = ['aaaab', 'ActionScript', 'AppleScript', 'Asp', 'Assembly', 'BASIC', 'Batch', 'C', 'C++', 'CSS', 'Clojure', 'COBOL', 'ColdFusion', 'Erlang', 'Fortran', 'Groovy', 'Haskell', 'HTML', 'Java', 'JavaScript', 'Lisp', 'Perl', 'PHP', 'PowerShell', 'Python', 'Ruby', 'Scala', 'Scheme', 'SQL', 'TeX', 'XML']; 
}); 

或者,如果这是一个逗号分隔的文本文件,并在客户端,你可以使用JavaScript,喜欢的事阅读:

// <input name="myfile" id="myfile" type="file" /> 
$("#myfile").on('change', function() { 

    var file = this.files[0]; 
    // Some validations 
    console.log(file.name); 
    console.log(file.size) 

    var FileReader = new window.FileReader(); 
    reader.onload = function (event) { 
     // The file's text will be in event.target.result 
     //console.log(event.target.result) 
     var fileContentArray = event.target.result.split(/\r\n|\r|\n/g); // split by newlines 

     // Use the file content in fileContentArray 
    }; 

    reader.readAsText(file); 
}); 

参见:https://developer.mozilla.org/en-US/docs/Web/API/FileReader