C# asp.net+;Viewstate和逗号分隔的字符串

C# asp.net+;Viewstate和逗号分隔的字符串,c#,asp.net,viewstate,C#,Asp.net,Viewstate,我读过很多关于页面如何因过度使用Viewstate而陷入困境的文章,我不确定是否使用逗号分隔的字符串(可能由3-4个单词组成)并将其拆分为数组 string s = 'john,23,usa'; string[] values = s.Split(','); 对于检索,这将有所帮助,因为我看到我的许多同事正在这样做,可能是为了提高页面加载性能。有人能提出建议吗?事实上,在某些情况下,这的确会有所不同,但这似乎很棘手,而且往往无关紧要。 见以下案例: 示例显示了以字节为单位的ViewState大

我读过很多关于页面如何因过度使用Viewstate而陷入困境的文章,我不确定是否使用逗号分隔的字符串(可能由3-4个单词组成)并将其拆分为数组

string s = 'john,23,usa';
string[] values = s.Split(',');

对于检索,这将有所帮助,因为我看到我的许多同事正在这样做,可能是为了提高页面加载性能。有人能提出建议吗?

事实上,在某些情况下,这的确会有所不同,但这似乎很棘手,而且往往无关紧要。
见以下案例:

示例显示了以字节为单位的
ViewState
大小,这意味着没有任何内容的页面将导致68字节的
ViewState
。 其他所有内容都是手动加载到
ViewState
的内容

string x = string.Empty;

for (int i = 0; i < 10000; i++)
{
    if (i != 0) x += ",";

    x += i;
}

//x = "0,1,2,3,4,5,6,7,8...9999"
ViewState["x"] = x;

//Result = 65268 bytes
将字符串值0..9999放在
ViewState

string x = string.Empty;

for (int i = 0; i < 10000; i++)
{
    if (i != 0) x += ",";

    x += i;
}

//x = "0,1,2,3,4,5,6,7,8...9999"
ViewState["x"] = x;

//Result = 65268 bytes
如果覆盖页面
SaveViewState
方法:

protected override object SaveViewState()
{
    //100 bytes
    return new string[] { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10" };

    //100 bytes
    return "1,2,3,4,5,6,7,8,9,10";
}

由于
ViewState
是加密和
Base64编码的,
在某些情况下,可能只是对两个不同的对象进行字符串编码,从而生成两个不同的页面输出。

事实上,在某些情况下确实会有所不同,但这看起来很棘手,而且往往不相关。
见以下案例:

示例显示了以字节为单位的
ViewState
大小,这意味着没有任何内容的页面将导致68字节的
ViewState
。 其他所有内容都是手动加载到
ViewState
的内容

string x = string.Empty;

for (int i = 0; i < 10000; i++)
{
    if (i != 0) x += ",";

    x += i;
}

//x = "0,1,2,3,4,5,6,7,8...9999"
ViewState["x"] = x;

//Result = 65268 bytes
将字符串值0..9999放在
ViewState

string x = string.Empty;

for (int i = 0; i < 10000; i++)
{
    if (i != 0) x += ",";

    x += i;
}

//x = "0,1,2,3,4,5,6,7,8...9999"
ViewState["x"] = x;

//Result = 65268 bytes
如果覆盖页面
SaveViewState
方法:

protected override object SaveViewState()
{
    //100 bytes
    return new string[] { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10" };

    //100 bytes
    return "1,2,3,4,5,6,7,8,9,10";
}
由于
ViewState
是加密和
Base64编码的,
在某些情况下,可能只是对两个不同对象进行字符串编码,从而生成两个不同的页面输出