2011-04-01 1 views
1

Je veux retourner List<ClassName> & count (int) de code-behind (C#) à javascript. Comment puis-je faire ceci?Comment puis-je retourner List & Integer de C# à Javascript

+0

Une liste de quoi? – Sapph

+0

Liste de n'importe quelle classe par exemple EmpDetails – Tuscan

+0

Plus d'informations sur votre situation spécifique seraient utiles, mais comme conseil général vous pourriez faire un AJAX POST à ​​un service Web qui renvoie vos données sous forme JSON. – Sapph

Répondre

3

Vous pouvez utiliser JavaScriptSerializer:

var myClass = new ClassName(); 

... 

var jSon = new JavaScriptSerializer(); 
var OutPut = jSon.Serialize(myClass); 

Response.Write(OutPut); 

Vous devez importer cet espace de noms: System.Web.Script.Serialization

MISE À JOUR:

Vous pouvez utiliser jQuery pour poster la demande:

<script type="text/javascript"> 
    $(document).ready(function() { 
     $.ajax({ 
      type: 'POST', 
      url: 'WebForm2.aspx', 
      data: {}, 
      dataType: 'json', 
      complete: function(XMLHttpRequest, textStatus) { 
       var Response = $.parseJSON(XMLHttpRequest.responseText); 
       alert(Response.Classes[0].Name); 
      } 
     }); 
    }); 
</script> 

ce qui est le code-behind:

public partial class WebForm2 : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 

     var classWrapper = new ClassWrapper(); 

     classWrapper.Classes.Add(new ClassName() { Name = "Test 1" }); 
     classWrapper.Classes.Add(new ClassName() { Name = "Test 2" }); 
     classWrapper.Classes.Add(new ClassName() { Name = "Test 3" }); 
     classWrapper.Count = classWrapper.Classes.Count; 


     var jSon = new JavaScriptSerializer(); 
     var OutPut = jSon.Serialize(classWrapper); 

     Response.Write(OutPut); 
    } 
} 

public class ClassWrapper 
{ 
    public ClassWrapper() 
    { 
     Classes = new List<ClassName>(); 
    } 
    public List<ClassName> Classes { get; set; } 
    public int Count { get; set; } 
} 

public class ClassName 
{ 
    public string Name { get; set; } 
} 

Quelques astuces pour ASP.NET (dans MVC serait plus facile).

dans le code HTML de WebForm2.aspx enlever tout le HTML sans directive de page:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm2.aspx.cs" Inherits="AutocompleteASPNET.WebForm2" %> 
2

La meilleure façon d'atteindre la fonctionnalité requise est d'utiliser Ajax.

Pour cela, créez une méthode de page dans le code derrière et appelez cette méthode du côté client via javascript.

Pour plus de détails comment appeler la méthode côté serveur à partir jquery, check-out le lien suivant

Using jQuery to directly call ASP.NET AJAX page methods