2014-10-30 2 views
1

У меня есть приложение WebForms, в котором я храню массив строк в объекте Session, и мне нужен , чтобы получить этот массив в javascript-коде. Может быть, кто-то может предоставить какое-либо решение, как мне это сделать?ASP NET чтение сеанса из javascript

Вот мой код:

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

, но не работает и answerss переменная содержит простую строку после присваивания. ('System.String []')

+0

Вы инициализацию ответов в виде строки. Подобно тому, как делать «var отвечает =« некоторое значение »; вы должны инициализировать и заполнять ответы, как любой другой массив в javascript. "var отвечает = ['a1', 'a2', ...];" –

ответ

-1

(я предполагаю, и использовать 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

Обязательно убедитесь, что ответы не содержат « –

+0

@the_lotus yup, дополнительные проверки/конверсии могут быть в порядке, по крайней мере, избежать апострофа \» в результирующей строке –

+0

thx много! оно работает. – Alex44

1

Если вы сериализуете объект answers в JSON, вы должны иметь доступ к нему программно из JavaScript.

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

ОБНОВЛЕНИЕ: Ниже приведен пример работы с использованием четырех различных типов данных (строки, числа, сбор, Object). Это иллюстрирует, как JSON, сериализованный с сервера, можно использовать в качестве литеральной копии объекта JavaScript на стороне клиента.

Code-за:

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

Смежные вопросы