C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: ユーザコントロールのViewStateについて


(過去ログ 80 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■47609 / inTopicNo.1)  ユーザコントロールのViewStateについて
  
□投稿者/ def (1回)-(2010/03/09(Tue) 15:13:31)

分類:[ASP.NET (C#)] 

2010/03/09(Tue) 15:20:35 編集(投稿者)
2010/03/09(Tue) 15:19:27 編集(投稿者)

お世話になります。

VS2008、 Framework3.5での質問です。

ViewStateに値を保持するプロパティを持つユーザコントロールを作成し、それを1ページ内に
複数使用する場合(Repeaterに入れる等)のViewStateについて質問です。

この場合、
 1.ユーザコントロールでViewStateに使用するキーは固定文字で構わないのでしょうか?
 2.それとも、クラスのクライアントID+固定文字で実装すべきでしょうか?

要するに、ViewStateについてが正しく理解出来ていないのですが、1番の実装で
実働はうまく動いているように見えました。

これが正しいのか間違っているのか、ご指摘よろしくお願いいたします。


public partial class UserList : System.Web.UI.UserControl
{
	public bool ReadOnly
	{
		set
		{
			ViewState [ "ReadOnly" ] = value;
		}
		get
		{
			return (bool)(ViewState [ "ReadOnly" ] ?? false);
		}
	}

	protected override void OnPreRender ( EventArgs e )
	{
		base.OnPreRender ( e );
		
		// this.ReadOnly を使った処理
	}
}

引用返信 編集キー/
■47617 / inTopicNo.2)  Re[1]: ユーザコントロールのViewStateについて
□投稿者/ 囚人 (482回)-(2010/03/09(Tue) 18:20:45)
情報の元ソースが見つからなくて申し訳ないのですが、

>1.ユーザコントロールでViewStateに使用するキーは固定文字で構わないのでしょうか?

上記1の認識で問題ありません。

仕組み的には、NamingContainerの単位だったかと思います。これはコントロールのIDを一意にする単位と同じです。

また、ASP.NET 2.0から、コントロールには「ControlState」と呼ばれる仕組みが備わっており、コントロールの状態にはそれを使った方が良いです。ViewStateはアプリケーション単位、ページ単位(厳密にはNamingContainer単位)で無効にできますが、その場合でもControlStateは有効です。

参考
http://msdn.microsoft.com/ja-jp/library/1whwt1k7(VS.80).aspx

引用返信 編集キー/
■47620 / inTopicNo.3)  Re[2]: ユーザコントロールのViewStateについて
□投稿者/ def (2回)-(2010/03/09(Tue) 19:14:40)
No47617 (囚人 さん) に返信

囚人さんありがとうございます。
今回はすでに作り直せる時期ではないので見送りますが、ControlState、勉強しておきます。

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


解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -