0

私は現在、自分のコードの何が問題なのかを理解しようとしています:

動作しません

if(...){  
    ...  
}else{  
    someVariableAsString = "myValue123";  
    MultiView1.SetActiveView(My3thView_ID_In_MultiViewControl);  
}

作品

if(...){  
    ...  
}else{  
    //someVariableAsString = "myValue123";  
    MultiView1.SetActiveView(My3thView_ID_In_MultiViewControl);  
}

..なぜ、これに対する解決策はありますか?

4

3 に答える 3

1

負荷ではなく INIT に作用しようとしているため、データはまだサーバーに接続されていません。

ASP.NET での Web 要求のライフ サイクルに関する次のレビューが役に立ちます。MSDN ASP.NET ページ ライフ サイクル

関連する抜粋は次のとおりです。

初期化

 During page initialization, controls on the page are available and

各コントロールの UniqueID プロパティが設定されます。該当する場合は、マスター ページとテーマもページに適用されます。現在の要求がポストバックの場合、ポストバック データはまだ読み込まれておらず、コントロール プロパティの値はビュー ステートの値に復元されていません。

 Load

 During load, if the current request is a postback, control 

プロパティには、ビュー ステートとコントロール ステートから復元された情報が読み込まれます。

実行しようとしているコードをページ ロード ハンドラー (または後) に移動し (IsPostBack をテストすることを忘れないでください)、目的の結果が得られないかどうかを確認します。

新しい試み:

あなたの動作しないを次のように変更してみてください:

if(...){  
    ...  
}else{  
    string someVariableAsString = "myValue123";  
    MultiView1.SetActiveView(My3thView_ID_In_MultiViewControl);  
}
于 2011-04-18T18:49:30.390 に答える
0

someVariableAsStringが例外をスローして、コードが次の行に到達しないようにしているようです。変数の型を確認してください。

于 2011-04-18T18:00:52.640 に答える
0

私は自分のケースの解決策を得ることができました: View としてのプロパティ
に変更しました。 Gobal.asax へのセッション変数を作成し、正しい結果が得られるようになりました (1 ページ ロード後)。:-) someVariableAsString

しかし、私の場合はこれで十分です。

問題が解決しました。

onInit{  
m_myVariable;  
myFunction();  
...
}  

ボイド関数(){   
// if 節が記述されている  
}  

public ビュー myVariable  
{  
get { return m_myVariable = Session["myVariableAtSession"] as View; }  
設定 { m_myVariable = 値;  
 セッション["myVariableAtSession"] = m_myVariable;  
 }  
}
于 2011-04-19T11:48:40.280 に答える