C# 主页上LoginView的怪异行为

C# 主页上LoginView的怪异行为,c#,asp.net,controls,pageload,loginview,C#,Asp.net,Controls,Pageload,Loginview,提交的问题引入了NullRef异常问题。在提出解决方案时,我发现页面加载和登录视图出现了一些奇怪的行为 在页面完全加载之前,控件的可访问性似乎存在中断。这会导致服务器端控件被空引用,除非您强制公开它们 WebForm1.aspx 站点2.主机 现在,您运行它时,它的行为应该与预期的一样 问题 为什么这行代码会公开控件?是否有一个“控制缓存”在进入页面加载时不会被刷新?运行FindControl()刷新此缓存?为什么这些控件还没有公开 也许这是故意的,但不太可能 希望这里有人能了解为什么会发生这种

提交的问题引入了NullRef异常问题。在提出解决方案时,我发现页面加载和登录视图出现了一些奇怪的行为

在页面完全加载之前,控件的可访问性似乎存在中断。这会导致服务器端控件被空引用,除非您强制公开它们

WebForm1.aspx 站点2.主机 现在,您运行它时,它的行为应该与预期的一样

问题 为什么这行代码会公开控件?是否有一个“控制缓存”在进入页面加载时不会被刷新?运行FindControl()刷新此缓存?为什么这些控件还没有公开

也许这是故意的,但不太可能

希望这里有人能了解为什么会发生这种情况

<%@ Page Language="C#" MasterPageFile="~/Site2.Master" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="Test.WebForm1" %>

<asp:Content runat="server" ID="BodyContent" ContentPlaceHolderID="MainContent">
    <div ID="success" style="visibility:visible" runat="server">         
        <asp:button id="btnClick" onclick="btnClick_Click" runat="server" text="Click Me!" />
    </div>

    <div ID="fail" style="visibility:hidden" runat="server">
        <asp:Button ID="btnDontClick" onclick="btnDontClick_Click" runat="server" Text="Do Not Click Me..." />
    </div>
</asp:Content>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;

namespace Test
{
    public partial class WebForm1 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            //this.Master.FindControl("LoginView1").FindControl("MainContent");
            if (Page.FindControl("fail") != null)
            {
                fail.Style.Add("visibility", "hidden");
                success.Style.Add("visibility", "Visible");
            }
            else
            {
                fail.Style.Add("visibility", "hidden");
                success.Style.Add("visibility", "Visible");
            }
        }

        protected void btnClick_Click(object sender, EventArgs e)
        {
            fail.Style.Add("visibility", "Visible");
            success.Style.Add("visibility", "hidden");
        }

        protected void btnDontClick_Click(object sender, EventArgs e)
        {
            fail.Style.Add("visibility", "hidden");
            success.Style.Add("visibility", "Visible");
        }
    }
}
<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Site2.master.cs" Inherits="Test.Site2" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <asp:ContentPlaceHolder ID="head" runat="server">
    </asp:ContentPlaceHolder>
</head>
<body>
    <form id="form1" runat="server">
    <div id="body">
        <asp:LoginView ID="LoginView1" runat="server" ViewStateMode="Disabled">
            <AnonymousTemplate>
                    <asp:ContentPlaceHolder runat="server" ID="MainContent" />
            </AnonymousTemplate>
            <LoggedInTemplate>

            </LoggedInTemplate>
        </asp:LoginView>
    </div>
    </form>
</body>
</html>
this.Master.FindControl("LoginView1").FindControl("MainContent");;