2011-07-13 8 views
2

マスターページからイベントが発生したかどうかを確認する必要があります。そのために私はビューステートに数えました。これはページロード時に例外をスローしています。ページローで次の行を呼び出すだけです。マスターページでビューステートを設定するにはどうすればよいですか?

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

助けてください。

+2

viewstateは共有オブジェクトではありません。つまり、masterページには独自のページがあり、各コントロールには独自のページがあります。 –

答えて

2

これは、いくつかのケースで例外をスローします。

  1. 「カウント」キーはまだビューステートにありません。 ViewState["Count"]はヌルを返し、.ToString()コールはNullReferenceExceptionをスローします。
  2. "Count"の値をintに解析して、FormatExceptionを投げることはできません。

しようとするもの:

  • あなたはそれから読み取ろうとする前に、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のを使用して検討するかもしれません。
+0

私はそう思っているからだ。 「オブジェクト参照がオブジェクトのインスタンスに設定されていません」というエラーが表示される – NewBie

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

ViewState["Count"]が例外を回避するための操作を実行する前に存在していることを確認してください。

0

使用このコードは0にカウント値をデフォルトに:

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

これは「カウント」キーは、ViewStateのコレクションに存在しない場合は、例外を見て停止します。

関連する問題