2016-05-19 9 views
0

おはようユーザーコントロールのリテラルテキストを変更VB.Net

私はVB.Netプロジェクトを持っています。 私のメインページはDisplay.aspxです 私はこのページを使用する様々なユーザーコントロール(ascx)を持っています。 これらのコントロールの1つに、Literal、lblCatQuestionがあります。制御

Protected WithEvents lblCatQuestion As Literal 

の背後にあるコードで は何、このリテラルは基本的に行うことは、それはいくつかのテキストやラジオボタンでアップロードしています。ラジオボタンをクリックすると、Jqueryフォームがポップアップします。フォームを完了して保存して閉じると、このリテラルにメッセージが表示されるはずです。 メッセージは、私がデバッグするとき、私は常に代入しようとNullReferenceExceptionを取得しているDisplay.aspx.vb

Session("CatMessage") = "Completed" 
    Dim label As System.Web.UI.WebControls.Literal = New System.Web.UI.WebControls.Literal 
    label = DirectCast(Page.FindControl("lblCatQuestion"), System.Web.UI.WebControls.Literal).Text = Session("CatMessage") 

問題で、ここでの目的のために

背後にある主な表示ページのコードから来ていますリテラルへのテキスト私が見たとき 、こちらのページを

display_aspx enter image description here

としてではなく、私のURLに記述されている、ページがある

Display.aspx?PID = 4

これはnull参照例外を引き起こす可能性がありますか?ページは正確にDisplay.aspxではなく、Display.aspx?pid = 4 enter image description here

リテラルのテキストはどのように変更できますか? テキスト値を変更できるように、正確なページをどのように取得できますか?助けのための

おかげ

EDIT

これは

If Not Session("CatMessage") Is Nothing Then 
      lblCatQuestion.Text = Session("CatMessage") 
     End If 

の背後にあるコントロールのコードで宣言されているが、テキストは変更されません。したがって、なぜ私は別の方法を検討しているのですか?

答えて

0

リテラルがユーザーコントロール内にある場合は、そのページ内ではなく、そこを見なければなりません。

Session("CatMessage") = "Completed" 
Dim label As System.Web.UI.WebControls.Literal 
label = DirectCast(UserControl.FindControl("lblCatQuestion"), System.Web.UI.WebControls.Literal).Text = Session("CatMessage") 
+0

私はこれを試しました。まだ仕事がありませんでした。私が以前に持っていたことは、セッション( "CatMessage")が何もない場合 lblCatQuestion.Text =セッション( "CatMessage") 終了しかし、それはラベルをリフレッシュしませんでした。私が別の方法を試している理由 –

関連する問題