【发布时间】:2010-11-20 05:24:36
【问题描述】:
Panel pnl_Confirmation = (Panel)form1.FindControl("ConfirmationPanel") as Panel;
pnl_Confirmation.Visible = false;
我在上面的代码中不断收到“NullReferenceException”。 “ConfirmationPanel”是我根据表单是否成功提交来显示/隐藏的面板。
面板被包裹在一个 LoginView 控件中,这就是为什么我不能直接调用“ConfirmationPanel”:
<asp:LoginView ID="LoginView1" runat="server">
<LoggedInTemplate>
<asp:Panel id="ConfirmationPanel" runat="server" Wrap="False">
...
为什么这个是空的?它应该引用 ID 为“ConfirmationPanel”的面板,不是吗?
谢谢
【问题讨论】:
-
Panel pnl_Confirmation = (Panel)form1.FindControl("ConfirmationPanel") as Panel;为什么要投射两次? -
这可能不是您想要的那种评论,但是有什么方法可以代替 MVC 工作吗? ASP.NET 网络表单是集中的邪恶。
-
您不需要两种类型的类型转换:“as Panel”就足够了。
-
是执行语句Panel pnl_Confirmation = (Panel)form1.FindControl("ConfirmationPanel") as Panel时第一次可见的面板; ?