2009-08-21 9 views
0

J'utilise Asp.net MVC et dans le contrôleur j'ai une fonction qui génère une liste de tableau, c'est à dire Liste et après l'avoir convertie dans une vue, je la retourne à la page d'affichage.Dans la page d'affichage je la convertis en liste par le code suivant:Comment accéder aux éléments d'une liste de tableau passée depuis le contrôleur en javascript?

  <% List<string[]> items = (List<string[]>)ViewData["Items"]; %> 

maintenant, je veux accéder aux éléments un par un de chaque tableau appartenant à la liste à l'aide pour la déclaration/foreach dans les javascript.I essaie le code suivant:

  var j; 
      for(j=0;j<'<%=items.Count%>';j++) 
      { 
        alert('<%=items['+j+'].GetValue(0).ToString()%>'); 
        ..........           
      } 

Mais, je reçois l'erreur: "Trop de caractères dans le littéral de caractère" .Si j'utilise le code suivant, alors il fonctionne bien:

    alert('<%=items[0].GetValue(0).ToString()%>'); 

Mais je veux l'utiliser dynamically.Is-il possible de faire cette opération? S'il vous plaît aider me.thanks à l'avance. Arka

Répondre

0

Vous pouvez traiter des éléments de la liste uniquement du côté serveur dans ce scénario.

2

Vous devez sérialiser côté serveur objet de la liste en javascript tableau:

Exemple C# fonction de sérialisation objet:

protected string SerializeToJson(List<string[]> list) { 
     if (list != null && list.Count > 0) { 
      var stream = new MemoryStream(); 
      var jsSerializer = new DataContractJsonSerializer(list.GetType()); 
      jsSerializer.WriteObject(stream, list); 

      return Encoding.UTF8.GetString(stream.ToArray()); 
     } 
     return string.Empty; 
    } 

Exemple d'utilisation (JavaScript avec appel inline à la fonction de sérialisation C# JSON):

// the following call will return JSON array [["a","b"]] 
var arrayFromServer = <%= SerializeToJson(new List<string[]> { new [] {"a", "b"}};) %>; 

Est-ce ce que vous demandiez?

+0

Merci beaucoup.C'est ce que je voulais.J'ai résolu le problème.Merci encore une fois. –

Questions connexes