【问题标题】:which one is better for storing data in viewstate?哪一个更适合在视图状态中存储数据?
【发布时间】:2012-05-18 11:40:04
【问题描述】:

我创建了一个新的 asp.net 自定义控件。该控件通过字符串列表获取其数据。 现在我想知道对我来说更好的解决方案是什么?存储List<String>string[]

【问题讨论】:

  • 我认为你应该使用 IEnumerable,这样你的客户就不受任何限制。
  • 客户?他正在谈论将其存储在视图状态中!
  • 只是弄错了,我以为他是在谈论制作一些财产...

标签: c# asp.net .net custom-controls viewstate


【解决方案1】:

基于this answer to another question,最好将其存储为数组,因为列表本身会增加一些存储开销。

你从视图状态中检索它之后是否从数组中创建一个列表取决于你。

对于那些说“使用列表,它比数组更精细”的人 - 一旦集合处于 ViewState 中,它是否具有良好的 Add 方法并不重要。

public List<string> MyItemsFromViewState
{
    get { return new List<string>((string[])ViewState["MyItems"]); }
    set { ViewState["MyItems"] = value.ToArray(); }
}

【讨论】:

    【解决方案2】:

    当您使用静态数组时,一般的做法是使用string[],基本上是当您不需要添加/删除元素时(仅通过索引访问)。

    如果集合需要修改,请使用List&lt;string&gt;

    所以在你的情况下,使用List&lt;string&gt; :)

    【讨论】:

      【解决方案3】:

      ViewState 而言,这没什么区别。两者的大小应该几乎相同。对于List&lt;T&gt; 提供的额外细节,我更喜欢List&lt;string&gt;

      【讨论】:

        【解决方案4】:

        字符串列表更适合您放入视图并从视图状态中获取,因为字符串列表将为您提供更大的工作灵活性

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-05-15
          • 2013-02-15
          • 2010-12-29
          • 2015-01-19
          • 1970-01-01
          • 2016-02-02
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多