如何在母版页中设置视图状态?

时间:2011-07-13 11:17:00

标签: c# asp.net

我需要检查是否从主页面触发了一个事件。为此我在观察状态中保持计数。这是在页面加载时抛出异常。我只是在页面加载中调用以下行

Int32 count = Int32.Parse(this.ViewState["Count"].ToString());

请帮忙。

4 个答案:

答案 0 :(得分:2)

这会在少数情况下抛出异常。

  1. 键“Count”尚未处于视图状态。 ViewState["Count"]将返回null,.ToString()调用将抛出NullReferenceException
  2. 无法将“Count”的值解析为int,抛出FormatException
  3. 要尝试的事情:

    • 您应该检查代码的顺序,以确保在尝试读取之前设置了count的值。

    您的代码可以改进如下:

    Int32 count;
    string countStr = this.ViewState["Count"];
    
    if(!string.IsNullOrEmpty(countStr )
    {
        bool ok = Int32.TryParse(countStr, out count);
    
        if(ok)
        {
            // Do stuff with count
        }
    }
    
    • 您可以考虑使用Session而不是ViewState在页面之间存储自定义数据。

答案 1 :(得分:0)

<pagesenableSessionState="false"enableViewState="false"theme="Default" />

答案 2 :(得分:0)

确保在执行操作之前存在ViewState["Count"]以避免异常。

答案 3 :(得分:0)

使用此代码将计数值默认为0:

Int32 count = Int32.Parse((this.ViewState["Count"] ?? "0").ToString());

如果ViewState集合中不存在“Count”键,这将阻止您看到异常。