2014-10-30 55 views
1

我有一個WebForms應用程序,我在Session對象中存儲字符串數組,我需要 才能在JavaScript代碼中獲取此數組。也許有人可以提供任何解決方案,我應該如何做到這一點?ASP NET從javascript讀取會話

這裏是我的代碼:

function loadAnswers() { 
     var answers = '<%=Session("answers")%>'; 
    } 

,但不工作,answerss變量包含轉讓後簡單的字符串。 ('System.String []')

+0

要初始化的答案爲字符串。有點像做「var答案='一些價值';」你必須初始化和填充像JavaScript中的任何其他數組的答案。 「var answers = ['a1','a2',...];」 – 2014-10-30 15:25:06

回答

-1

(我假設u使用VB)你可以使用這樣的代碼:

function loadAnswers() { 
    var answers = ['<%= String.Join("','", CType(Session("answers"), String()))%>']; 
} 

它實際上將你的數組加入到一個字符串中,也就是說格式化成JS數組表示。

因此,舉例來說,如果你有這樣的

Session("answers") = New String() {"aaa", "bbb", "ccc"} 

陣列將prodice這樣一行

var answers = ['aaa','bbb','ccc']; 

這將是一個真正的JS數組。如果你需要一個簡單的字符串,而不是,您可以使用

var answers = '<%= String.Join(",", CType(Session("answers"), String()))%>'; 

這將產生

var answers = 'aaa,bbb,ccc'; 
+0

必須確保答案不包含任何' – 2014-10-30 15:43:13

+0

@the_lotus yup,額外的檢查/轉換可能是有序的,至少在結果字符串 – 2014-10-30 15:44:57

+0

thx中跳過撇號'!有用。 – Alex44 2014-10-30 15:58:31

1

如果您將answers對象序列化爲JSON,那麼您應該可以通過JavaScript以編程方式訪問它。

var answers = <%= new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(Session("answers")) %>; 

UPDATE:下面是使用四種不同類型的數據(字符串,數字,收集,對象)的工作示例。這說明了從服務器序列化的JSON如何用作JavaScript對象文本客戶端。

代碼隱藏:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 

namespace WebFormsTestApp 
{ 
    public partial class _Default : Page 
    { 
     protected string Name = "Alice Student"; 
     protected decimal GPA = 3.84M; 
     protected List<string> Classes = new List<string>() { "World History", "Algebra II", "English", "Phys Ed", "Latin I", "Home Economics" }; 
     protected School School = new School() { Name = "Jefferson High School", County = "Hamilton County", Ranking = 5 }; 
    } 

    public class School 
    { 
     public string Name { get; set; } 
     public string County { get; set; } 
     public int Ranking { get; set; } 
    } 
} 

ASPX:

<%@ Page Title="Home Page" Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebFormsTestApp._Default" %> 

<script type="text/javascript"> 
    var name = <%= new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(Name) %>; 
    var gpa = <%= new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(GPA) %>; 
    var classes = <%= new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(Classes) %>; 
    var school = <%= new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(School) %>; 
    alert(name + ' goes to ' + school.Name + ', has a ' + gpa + ' GPA, and takes ' + classes.length + ' classes.'); 
</script> 
+0

謝謝!很有幫助! – Alex44 2014-10-30 15:59:48