2010-02-02 44 views
2

好吧,所以我对ASP.NET和MasterPage概念很陌生,并且出现了一个我无法弄清楚的错误。Nullref Exc。通过智能识别检测到标签?

这是我的Default.aspx的一部分:

<asp:Content ID="ContentLoginContent" ContentPlaceHolderID="LoginContentPlaceHolder" runat="server"> 
<div id="ContentLoginDiv"> 
    You've got <asp:Label ID="MemberCreditLabel" runat="server" Text="0"></asp:Label> credits. 

</div> 

这是我default.aspx.cs的相关部分:

public partial class _Default : System.Web.UI.Page 
{ 
    protected void Page_Init(object sender, EventArgs e) 
    { 

    } 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     if (User.IsInRole("Authenticated")) 
     { 


      MemberCreditLabel.Text = "hello "; 
     } 

    } 
} 

我得到一个Nullref例外在MemberCreditLabel上。它被智能感知检测到。我想这个问题可能是因为的ContentPlaceHolder“ContentLoginContent”只有在登录后显示这是我的母版的一部分:

<asp:LoginView ID="MemberLoginView" runat="server"> 
      <AnonymousTemplate> 
       <asp:Login ID="LogInBox" runat="server" Height="137px" style="margin-left: 0px" 
        Width="16px"> 
       </asp:Login>  
      </AnonymousTemplate> 
      <LoggedInTemplate> 
       Welcome <asp:LoginName ID="MemberLoginName" runat="server" /> ! 
       <asp:LoginStatus ID="MemberLoginStatus" runat="server" /> 
       <asp:ContentPlaceHolder ID="LoginContentPlaceHolder" runat="server"> 
       //Is this the problem? 
       </asp:ContentPlaceHolder> 
      </LoggedInTemplate> 
      </asp:LoginView> 

我想要做的是显示存储在数据库中的信用额度。用于检索我想要的数据的功能。我采用当前登录用户的用户名并希望获得与用户关联的信用额度。但是这个标签的这个奇怪的错误使我完全停止了。这可能与我尚未偶然发现的MasterPages概念有关。有任何想法吗?

+0

那么我从LoginView块中删除了ContentPlaceHolder,现在标签“按预期工作”。我怎样才能达到同样的结果呢?要拥有仅在登录时才显示的内容区域? – Phil 2010-02-02 17:21:15

回答

1

显然,这是by design

这是由设计。内容控件替换模板内的contentplaceholder控件的内容。因此,文本框实际上被模板化,因此需要使用FindControl进行查找 - 直接访问将不可用。

谢谢,

WebPlatform和工具团队。

然而,使用递归的FindControl,我是不是能够真正得到显示LoggedInTemplate内部控制的保持 - 在页面的标记的确,ReSharper的抱怨,它无法解析符号“LoginContentPlaceHolder “ - 即它无法在MasterPage上正确找到内容占位符。

有没有什么办法可以在所有认证页面上显示积分?

或者,您可以将包含信用点数的LoggedInTemplate包含到用户控件中,然后将其放在内容占位符内。

+0

我的解决方案是在用户未登录时仅将标签保留为空。登录时,我在Page_Load下填充标签。不知道这是否是预期的方式..对此应该有一些最佳做法。 – Phil 2010-02-03 13:52:31