1

私のマスターページにはこれが含まれています:

<asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
    <asp:Label ID="User" runat="server" Text="Welcome, " Visible="false"></asp:Label>
</asp:ContentPlaceHolder>

次のようにラベルにアクセスしようとしています:

Label welcomeLabel;
ContentPlaceHolder cPlaceHolder;            

cPlaceHolder = (ContentPlaceHolder)Master.FindControl("ContentPlaceHolder1");

if (cPlaceHolder != null)
{
    welcomeLabel = (Label)cPlaceHolder.FindControl("User");
    if (welcomeLabel != null)
    {
        welcomeLabel.Text = "Welcome, " + u.Name;
        welcomeLabel.Visible = true;
    }
 }

ContentPlaceHolder1 が実際に見つかり、HasControls() を使用すると true が返されることを確認しましたが、ラベルにアクセスできないようです。

助けて?

4

3 に答える 3

2

私も同じ問題を抱えています。

私がしたことは

  MasterPage ctl00 = FindControl("ctl00") as MasterPage;
ContentPlaceHolder cplacehld = ctl00.FindControl("ContentPlaceHolder1") as ContentPlaceHolder;
                Label label1= cplacehld.FindControl("User") as Label;
于 2012-05-16T08:29:23.223 に答える
0

試してみてください:

((Label)this.Page.Master.FindControl("User")).Text = "Welcome, " + u.Name;   
((Label)this.Page.Master.FindControl("User")).Visible = true;
于 2012-05-16T10:54:34.183 に答える
0

この問題は、自分のページに asp:Content タグがあり、マスター ページの contentplaceholderID が contentplaceholder の ID に設定されている場合、contenplacholder のコントロールにアクセスできないことに気付くまで、約 2 時間悩まされました。 . コンテンツ ページで asp:Content タグが空の場合でも、asp:Content ページは常に MasterPage コンテンツとマージされます。デフォルトのコンテンツを提供するために、ラベルを contentplaceholder タグの外に移動し、可視性を false に設定しました。次に、asp:Content タグのコンテンツがないと動的に判断した場合は、ラベルの可視性を true に設定して、デフォルトのコンテンツを表示します。正確にはエレガントではありませんが、機能します。

于 2013-01-01T22:06:26.440 に答える