Dynamically create javascript array with c# code behind

19,444

Solution 1

You should do this:

Code behind:

using System.Web.Script.Serialization;
...
public string getJson(){
   var publicationTable = new List<object>{
      new []{ 31422,"Abilene Reporter News","Abilene","TX",false,"D",0},
      new []{ 313844,"Acadiana Weekly","Opelousas","LA",false,"W",1 },
      new []{ 527825,"Action Advertiser","Fond du Lac","WI",false,"W",2}
   };
   return (new JavaScriptSerializer()).Serialize(publicationTable);
}

Ase you see, to create an array of mixed types, we create an array of anonymous type with new []. You could also have done it with new object[].

Aspx file:

<script>
    var publicationTable = <%= getJson() %>;
</script>

Hope this helps. Cheers

Solution 2

I think a List<List<object>> containing your items, passed through the JavaScriptSerializer would do the trick. Given that this data probably comes from a more structured data type, you could probably do better than List<List<object>>, but the JavaScriptSerializer is probably what you're after.

Share:
19,444
flavour404
Author by

flavour404

Updated on June 09, 2022

Comments

  • flavour404
    flavour404 almost 2 years

    I am updating an old classic ASP site to a new .net 3.5 version. The page has a custom list control which the client (my boss) wants to keep. This list control requires several arrays in order to work correctly. the array is a multi-dimensional list of publications. This is what it looks like:

    var publicationTable = [
        [31422,"Abilene Reporter News","Abilene","TX",false,"D",0],
        [313844,"Acadiana Weekly","Opelousas","LA",false,"W",1],
        [527825,"Action Advertiser","Fond du Lac","WI",false,"W",2]...n]
    

    I want to generate this array server side and register it. I have looked at the msdn but this is a little trivial. The conceptual issue is that the array is a mixture of string and ints and I am not sure how to recreate this, so how?

  • spender
    spender about 13 years
    Could get messy if the strings contain backslashes or quotes or similar. Would really require a Javascript escaping layer to make it bulletproof.
  • Steve
    Steve almost 13 years
    Best answer given the poster clearly has no intention of implementing any sort of rest/json service.
  • KallDrexx
    KallDrexx over 12 years
    Combining this with Linq has made it sooo much easier to do this in my MVC views when needed! Thanks!