在 Viewstate 中保存类型为 (string, List<string>) 的数据

Saving Data of type (string, List<string>) in Viewstate

用什么集合来存储Key,ViewState中的多个值。我的数据是 string KeyList<string> Values 类型,即一个键可以有一个或多个字符串值

假设我有需要在 ViewState 中保存的国家和城市。

我会

美国 - 纽约、哥伦比亚特区、芝加哥

加拿大 - 多伦多、温哥华、蒙特利尔

等等

我想将此数据保存到 ViewState,并且想知道如何在不创建自定义可序列化对象等的情况下最好地保存此数据。它们只是字符串。

我应该将它们保存为字符串键、逗号分隔的列表值吗?

您可以使用评论中提到的字典,这将是尝试访问您的数据时最有效的方式 collection.You 也可以使用字典 Class Collection像这样:

public class CollectingData
{
 public Collection<Countries> CollectCountries ;

 public CollectingData()
 {
 CollectCountries = new Collection<Countries>
 }
}

public class Countries
{
 public string country { get; set;}

 public List<string> states { get; set;}
} 

而在 class 中,您正尝试写入 collection 中,对于每个您调用 class 的新国家/地区,将国家/地区名称作为您的字符串,然后将您所在的州或地区添加到您的列表中。然后您可以将 class 的那个实例添加到您的 collection。像这样:

Countries mycountry = new Countries();
mycountry.states = new List<string>();

mycountry.country = "United States";
mycountry.states.Add("thisstate", "thatState");

CollectCountries.Add(mycountry);

您可以为要添加的每个国家/地区执行类似的操作。希望这可以帮助你。然而,字典路线肯定会比这更快更容易。

似乎这个简单的数据可以存储在Dictionary<string, List<string>>中。字典键将是 State/Region,值将是城市列表。

你可以这样初始化

Dictionary<string, List<string>> locations = new Dictionary<string, List<string>>
{
    { "USA", new List<string> {"NY", "DC", "Chicago"}},
    { "Canada", new List<string> {"Toronto", "Vancouver", "Montreal"}},
};

然后使用该数据设置 ViewState 条目

ViewState["locs"] = locations;