Search code examples
asp.nethidden-field

storing an array of strings in a HiddenField asp.net


I need to store an array of string in a HiddenField in my webform with asp.net. Can anybody please tell me how I can achieve that? Thanks


Solution

  • Probably a few methods would work.

    1) Serialize the String[] in JSON

    This would be fairly easy in .NET using the JavaScriptSerializer class, and avoid issues with delimiter characters. Something like:

    String[] myValues = new String[] { "Red", "Blue", "Green" };
    string json = new JavaScriptSerializer().Serialize(myValues);
    

    2) Come up with a delimiter that never appears in the strings

    Delimit each string with a character such as ||| that will never appear in the string. You can use String.Join() to build this string. Something like:

    String[] myValues = new String[] { "Red", "Blue", "Green" };
    string str = String.Join("|||", myValues);
    

    And then rebuild it like:

    myValues = str.Split(new string[] { "|||" }, StringSplitOptions.RemoveEmptyEntries);
    

    This might be the best option if you can trust your input, such as a series of numbers of pre-defined choices. Otherwise, you'd probably want to check your input strings to make sure they don't contain this delimiter if you wanted to be very safe. You could potentially use HttpUtility.HtmlEncode() to escape each string first.