マスター ページ "default.master" とコンテンツ ページ "Store.aspx" があり、それぞれに独自のコード ビハインド ページがあります。マスター ページのコード ビハインドで、テキストを含むラベルを動的に作成しています。'Store.aspx.cs' のコード ビハインド ページでラベルのテキストを検索したいのですが、私のコードは 'null' コントロールを返しています...
ページ読み込み時の default.master.cs で:
<label runat=\"server\" id=\"displayname\"><a href='MyAvatar.aspx'>" + displayName + "</a></label>
ページ読み込み時の Store.aspx.cs :
HtmlGenericControl dName = (HtmlGenericControl)Master.FindControl("displayName");
if (dName != null)
Debug.Print("dName: " + dName.InnerText);
これは機能しません...ただし、次のように default.master ページに直接ラベルを付けると:
<label runat="server" id="displayName">TEST</label>
次に、Store.aspx をロードすると、デバッグ出力にはっきりと表示されます。
dName: TEST
ラベルを動的に作成する必要があり、Store.aspx.cs からだけでなく、他の 2 つのページからもラベルのコンテンツにアクセスできる必要があります (将来的にはさらに増える可能性があります)。何か案は??
編集:動的に作成されたラベルはより大きな要素の一部であることに注意したかっただけです...ラベルはテーブルセル内、テーブル行内、テーブル内にあり、そのすべてがリテラルコントロール内にあります...何一体、ここに全部貼り付けてみませんか?(ラベルは4行目にあります)
userCP.Text = "<table width=100% border=0 cellpadding=0 cellspacing=0>" +
"<tr><td colspan=4 style=\"font-size: large\"><center><b>Welcome,</b></center></td></tr>" +
"<tr style=\"height: 5px; \"><td colspan=4></td></tr>" +
"<tr><td colspan=4><center><label runat=\"server\" id=\"displayname\"><a href='MyAvatar.aspx'>" + displayName + "</a></label></center></td></tr>" +
"<tr style=\"height: 5px; \"><td colspan=4></td></tr>" +
"<tr><td colspan=4><hr/></td></tr>" +
"<tr><td>" + leaderLink + "</td><td width=100% id=\"userCP_bones\" style=\"text-align:right; \">" + bones + "</td><td style=\"text-align:left;\"><b>/</b><a href='Store.aspx?SC=Acct' title='Click to upgrade your wallet!'>" + maxBones + "</a></td><td><center><img src='images/bone.png' alt='Bones' align='right' style=\"vertical-align:middle\"/></center></td></tr>" +
"<tr><td></td><td></td><td id='CartCount' style=\"text-align:right; text-decoration: underline; cursor:pointer; \"><a href='Checkout.aspx'>" + itemCount + "</a></td><td width=10%><center><a href='Checkout.aspx'><img src='images/cart.png' onmouseover=\"this.src='images/cart_h.png'\" onmouseout=\"this.src='images/cart.png'\" height='24' width='24' alt='Cart' align='right' style=\"vertical-align:middle; border:none\"/></a></center></td></tr>" +
"</table>";
編集:最初の回答に基づいて、「userCP」のリテラル コントロールの代わりに、それを ASP テーブルに変換し、コード ビハインドに行/セルを追加しました。
//Row for display name
TableRow r = new TableRow();
userCP.Rows.Add(r);
TableCell c = new TableCell();
r.Cells.Add(c);
c.ColumnSpan = 4;
Label l = new Label();
l.Text = "<center><a href='MyAvatar.aspx'>" + displayName + "</a></center>";
l.ID = "displayName";
c.Controls.Add(l);
私の store.aspx.cs は、実行時にまだ null を返しています。
Debug.Print("Name: " + Master.FindControl("displayName"));
ルックアップをキャストしても:
(HtmlGenericControl)Master.FindControl("displayName")
(Label)Master.FindControl("displayName")