Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разработка под ASP.NET > asp:LoginStatus


Автор: Springtime 13.9.2009, 09:52
Почему отказывается работать asp:LoginStatus в master page? а именно - логин отображается, но не обрабатываются события onloggingout, onloggedout.

Автор: 2xmax 13.9.2009, 12:46
не плохо бы было привести было код...

вот работающий пример:
Код

    <div id="header-links">
                    <asp:LoginView ID="MasterLoginView" runat="server">
                    <LoggedInTemplate>
                        Welcome:
                        <asp:LoginName ID="MasterLoginName" runat="server" />
                    </LoggedInTemplate>
                    <AnonymousTemplate>
                        Welcome: Guest.
                    </AnonymousTemplate>
                </asp:LoginView>
                &nbsp;&nbsp;[&nbsp;<asp:LoginStatus ID="MasterLoginStatus" runat="server" LogoutAction="Redirect"
                    LogoutPageUrl="~/LoggedOut.aspx" onloggedout="MasterLoginStatus_LoggedOut" 
                        onloggingout="MasterLoginStatus_LoggingOut" />
                &nbsp;]&nbsp;&nbsp;
             
                </div>

Автор: Springtime 13.9.2009, 13:03
Код

<asp:LoginView ID="LoginView1" runat="server">
                    <LoggedInTemplate>
                        <asp:LoginName ID="LoginName1" runat="server" FormatString="Welcome, {0}" /><br />
                        <asp:LoginStatus ID="LoginStatus1" runat="server" LogoutAction="Refresh" onloggingout="LoginStatus1_LoggingOut" onloggedout="LoginStatus1_LoggedOut" />
                        <br />
                        <asp:HyperLink ID="HyperLink1" Runat="server" NavigateUrl="~/MemberPages/ChangePassword.aspx">Change Passwords</asp:HyperLink>
                    </LoggedInTemplate>
                    <AnonymousTemplate>
                    <asp:LoginName ID="LoginName1" runat="server" FormatString="Welcome, {0}" /><br />
                        <asp:Login ID="Login1" runat="server" 
                        CreateUserText="Create a new user..."
                        CreateUserUrl="~/Register.aspx" 
                        PasswordRecoveryUrl="~/Recovery.aspx" 
                        UserNameLabelText="E-mail address:"
                        onauthenticate="Login1_Authenticate" 
                        PasswordRecoveryText="Recovery password" 
                        />
                    </AnonymousTemplate>
                </asp:LoginView>


Код

    protected void LoginStatus1_LoggingOut(object sender, LoginCancelEventArgs e)
    {
        Label1.Text = "Super";
        Session["Check"] = false;
    }
    protected void LoginStatus1_LoggedOut(object sender, EventArgs e)
    {
        Label1.Text = "Super";
        Session["Check"] = false;
    }

Автор: 2xmax 13.9.2009, 14:16
все работает. А Label нужно загружать через ViewState или Session:

например,
Код

protected void Page_Load(object sender, EventArgs e)
    {
        bool check=true;
        if (Session["Check"] != null) check = (bool)Session["Check"];
        Label1.Text = check ? "Bad" : "Super";
    }


Добавлено через 13 минут и 10 секунд
имхо с Session и ViewState удобнее работать так:
Код


#region Properties   
...
    private bool Check
    {
        get
        {
            object o = Session["Check"];
            if (o == null)
                return true;
            else
                return (bool)o;
        }
        set
        {
            Session["Check"] = value;
        }
    }    
..
    #endregion

    

Автор: Springtime 13.9.2009, 23:27
всем спасибо, проблема была в браузере - Internet Explorer 8 )) в настройках безопасности

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)