2015-03-16 2 views
0


Я хочу принять List как аргумент функции javascript.
Я вызываю эту функцию из кода позади.
И передача одного списка в функцию.
Но я получил «System.Collections.Generic.List`1 [System.Int32]» как значение аргумента при вызове функции.
Что мне делать, чтобы получить список при вызове функции.
Мой код:
Default.aspx.cs
Список переходов <int> как аргумент функции Javascript

protected void Page_Load(object sender, EventArgs e) 
    { 
     List<int> num = new List<int> { 12, 13, 14, 15, 16, 17, 18 }; 
     List<int> oddNum = num.Where(n => n % 2 == 1).ToList(); 

     ScriptManager.RegisterStartupScript(this, GetType(), "test", "test('"+oddNum+"');", true); 
    } 

Default.aspx

<head runat="server"> 
    <title></title> 
    <script type="text/javascript"> 

     function test(oddNum) { 
      alert(oddNum); 
     } 
    </script> 
</head> 

ответ

2

два вопроса:

  1. Вы полагаться на List<int>#ToString, который даст вам строку, как "System.Collections.Generic.List`1 [System.Int32]". Вам нужно что-то сделать, чтобы вывести список с пользой.

  2. Вы передаете его функции JavaScript как строку. В то время как может работать (мы можем преобразовать его в массив в JavaScript), нет необходимости; вы можете передать его непосредственно в виде массива.

На сервере, конвертировать список в строку, используя string.Join и использовать [ и ] вместо ' вокруг него:

ScriptManager.RegisterStartupScript(this, GetType(), "test", "test([" + string.Join(",",oddNum) + "]);", true); 

Скажем, наш список имеет 1, 3 и 5 в нем. Это вызывает вашу функцию как это:

test([1, 3, 5]); 

Ваша функция JavaScript затем получает массив:

function test(oddNum) { 
    // Use the oddNum array 
} 
+0

Я его полезный .. Я получил результат без отдельного вручную результата на ','. Благодарю. – 3rdEye

1

Попробуйте следующее:

ScriptManager.RegisterStartupScript(this, GetType(), "test", "test('" + string.Join(",", oddNum) + "');", true); 

string.join (.. .) будет принимать разделитель (в этом случае это ,) и список , он затем объединяет каждый элемент в списке, разделяя их с помощью разделителя.

+0

Спасибо ... Я получил результат. – 3rdEye

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