これはHTMLです。ユーザーコントロールを含むリピーターがあります。
<asp:Repeater ID="rpNewHire" runat="server">
<HeaderTemplate>
<table>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td>
<user:CKListByDeprtment ID = "ucCheckList"
DepartmentID= '<%# Eval("DepID")%>'
BlockTitle = '<%# Eval("DepName")%>'
runat = "server"></user:CKListByDeprtment>
</td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>
DepartmentIDは、ユーザーコントロール内で定義したプロパティです。
int departmentID;
public int DepartmentID
{
get { return departmentID; }
set { departmentID = value; }
}
そして、これは私がそれにアクセスしようとしている方法です
protected void Page_Load(object sender, EventArgs e)
{
int test = departmentID;
}
ページが初めて読み込まれるとき、departmentIDに値があります。ただし、ページがポストバックする場合、その値は常にです。
すべての変数(およびコントロール)は、ページのライフサイクルの最後に破棄されます。したがって、変数を永続化する方法が必要です。 ViewState
で。
public int DepartmentID
{
get {
if (ViewState["departmentID"] == null)
return int.MinValue;
else
return (int)ViewState["departmentID"];
}
set { ViewState["departmentID"] = value; }
}
MSDN Magazineの記事「ASP.NETアプリケーションで永続的なユーザー状態を管理するための9つのオプション」は便利ですが、MSDNWebサイトでは表示できなくなりました。 2003年4月版で、次のことができます Windowsヘルプファイル(.chm)としてダウンロード 。 (プロパティを表示し、「これはインターネットからダウンロードされました」というもののブロックを解除することを忘れないでください。そうしないと、記事を表示できません。)
ビューステートを使用するようにプロパティを変更します
int departmentID = 0;
public int DepartmentID
{
get {
if(ViewState["departmentID"]!=null)
{ departmentID = Int32.Parse(ViewState["departmentID"]); };
return departmentID;
}
set { ViewState["departmentID"] = value; }
}