DOBON.NET DOBON.NETプログラミング掲示板過去ログ

Viewstateの値保持

  • 題名: Viewstateの値保持
  • 著者: PG
  • 日時: 2011/02/16 23:54:26
  • ID: 28185
  • この記事の返信元:
    • (なし)
  • この記事への返信:
  • ツリーを表示
環境/言語:[Windows 7、VS2010]
分類:[ASP.NET]

ASP.NET4.0(VB)でWEBのシステムを開発しております。

Viewstateの値保持に関しましてご質問があります。

マスターページで「Viewstate("a") = 1」のように設定し、マスターページを継承しているコンテンツページで「Viewstate("a")」を見ると、Nothingになっています。
実際実行すると、マスターページとコンテンツページがまとまった1つのページとなるのですが、Viewstateはマスターページとコンテンツページ間で値の保持ができないのでしょうか??

Viewstateでできなければ、Sessionを使って実装しようとは思っております。

ご教授お願いします。
2011/02/17(Thu) 13:39:51 編集(投稿者)

■No28185 に返信(PGさんの記事)
> 実際実行すると、マスターページとコンテンツページがまとまった1つのページとなるのですが、
> Viewstateはマスターページとコンテンツページ間で値の保持ができないのでしょうか??

HTML を出力する段階においてマスターページとコンテンツページは結合されますが、
サーバー側でのコントロールの認識といいますか、MasterPage.ViewState プロパティと
Page.ViewState プロパティはそれぞれ異なります。
MasterPage.ViewState プロパティに設定した値が Page.ViewState プロパティと共有される
ことはありません。

ViewState に設定する値がマスターページと関連するものであれば、値の取得もマスターページで
行うとよいと思います。

[Site1.Master]

Public ReadOnly Property A() As Integer
  If (Me.ViewState("a") Is Nothing) Then
    Return -1
  Else
    Return DirectCast(Me.ViewState("a"), Integer)
  End If
End Property

[WebForm1.aspx.vb]

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
  Dim a As Integer = DirectCast(Me.Master, Site1).A
  Debug.WriteLine(a)
End Sub

ViewState に設定する値がコンテンツページと関連するものであれば、値の設定をコンテンツページ
で行うとよいと思います。
  • 題名: Re[2]: Viewstateの値保持
  • 著者: PG
  • 日時: 2011/02/22 13:25:26
  • ID: 28230
  • この記事の返信元:
  • この記事への返信:
    • (なし)
  • ツリーを表示
なるほど。。。
そういうやり方もありますね。

参考にさせていただきます。

ありがとうございました。

■No28196に返信(もりおさんの記事)
> 2011/02/17(Thu) 13:39:51 編集(投稿者)
>
> ■No28185 に返信(PGさんの記事)
>>実際実行すると、マスターページとコンテンツページがまとまった1つのページとなるのですが、
>>Viewstateはマスターページとコンテンツページ間で値の保持ができないのでしょうか??
>
> HTML を出力する段階においてマスターページとコンテンツページは結合されますが、
> サーバー側でのコントロールの認識といいますか、MasterPage.ViewState プロパティと
> Page.ViewState プロパティはそれぞれ異なります。
> MasterPage.ViewState プロパティに設定した値が Page.ViewState プロパティと共有される
> ことはありません。
>
> ViewState に設定する値がマスターページと関連するものであれば、値の取得もマスターページで
> 行うとよいと思います。
>
> [Site1.Master]
>
> Public ReadOnly Property A() As Integer
> If (Me.ViewState("a") Is Nothing) Then
> Return -1
> Else
> Return DirectCast(Me.ViewState("a"), Integer)
> End If
> End Property
>
> [WebForm1.aspx.vb]
>
> Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
> Dim a As Integer = DirectCast(Me.Master, Site1).A
> Debug.WriteLine(a)
> End Sub
>
> ViewState に設定する値がコンテンツページと関連するものであれば、値の設定をコンテンツページ
> で行うとよいと思います。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板