Событие нажатия LinkButton

У меня есть эта проблема .. У меня есть одна кнопка ссылки «Войти» и одна кнопка ссылки «Список пользователей» на одной мастер-странице. Когда пользователь вошел в систему, и он нажимает кнопку ссылки «UserList», открывается страница UserList, на которой есть главная страница, упомянутая выше. (Этого я добился).

но если пользователь не вошел в систему и нажимает «UserList», следует вызвать щелчок кнопки «Войти». как я могу достичь этого? Пожалуйста помоги..


person Community    schedule 07.07.2009    source источник


Ответы (2)


Один из способов сделать это — добавить раздел авторизации в ваш файл web.config, который будет вызывать страницу входа, когда пользователь щелкает ссылку UserList, а пользователь не вошел в систему:

<location path="UserList.aspx">
    <system.web>
        <authorization>
            <deny users="?"/>
        </authorization>
    </system.web>
</location>

Если это имеет смысл для вашего приложения, вы даже можете скрыть ссылку на список пользователей от незарегистрированных пользователей с помощью элемента управления <asp:LoginView>.

person CharlieG    schedule 07.07.2009
comment
моя проблема в другом. позволь мне объяснить. для входа в систему я использовал Ajax Modal Popup Extender. когда я нажимаю «Войти», появляется небольшой экран входа в систему. код: ‹cc1:ModalPopupExtender ID=ModalPopupExtender runat=server TargetControlID=LinkButton1 PopupControlID=RoundedPanel1 BackgroundCssClass=modalBackground CancelControlID=btnCancel Drag=True /› ‹/cc2:RoundedPanel›, где LinkButton1 — кнопка входа. теперь я хочу снова показать этот экран, когда пользователь нажимает на список пользователей, но не вошел в систему. - person ; 07.07.2009
comment
и я не хочу скрывать кнопку UserList, потому что она сочетается с некоторыми другими кнопками, которые сделают ее неправильной. вот почему я использую этот способ .. - person ; 07.07.2009

Попробуй это:

В HTML MasterPage:

Определите обработчик события onclick для LinkButtonLogin:

<asp:linkbutton id="LinkButtonLogin" runat="server" 
    text="Login" onclick="LinkButtonLogin_Click"></asp:linkbutton>

Создайте фиктивную кнопку, которая скрыта от просмотра. Затем для ModalPopupExtender измените TargetControlID элемента управления ModalPopupExtender с LinkButtonLogin на ButtonInvisible. Это эффективно подделывает ModalPopupExtender, чтобы его можно было скрыть/показать из вашего кода.

<asp:button id="ButtonInvisible" runat="server" style="display: none;" />

В коде MasterPage:

protected void Page_Load(object sender, EventArgs e)
{
    /*             
        This adds a client-side event to your HyperLink control that mimics
        LinkButtonLogin's onclick event, but ONLY if the current user is not 
        logged in.
    */
    if (!UserIsLoggedIn())
    {
        HyperLinkUserList.Attributes.Add("onclick", 
            "document.getElementById('" + 
                LinkButtonLogin.ClientID + "').click();");
    }
}

protected void LinkButtonLogin_Click(object sender, EventArgs e)
{
    // check if the user is logged in.       
    if (!UserIsLoggedIn())
    {         
        // show the modal login window
        ModalPopupExtender.Show();
    }
    else
    {
        /* 
           This assumes that you always want a user to 
           go to the UserList page upon being logged in.
           You can add some code here to redirect to 
           different pages based on certain criteria.
        */
        Response.Redirect("userlist.aspx");
    }
}
person Tim S. Van Haren    schedule 07.07.2009
comment
Скажите, пожалуйста, как я могу сделать это LinkButtonLoginAndUserList_Click (отправитель объекта, EventArgs e).. я новичок в asp.net.. - person ; 07.07.2009
comment
Я думаю, ваше решение работает.. но просто скажите мне, что делать в соответствии с этим: - person ; 07.07.2009
comment
моя проблема в другом. позволь мне объяснить. для входа в систему я использовал Ajax Modal Popup Extender. когда я нажимаю «Войти», появляется небольшой экран входа в систему. код: - person ; 07.07.2009
comment
‹cc1:ModalPopupExtender ID=ModalPopupExtender runat=server TargetControlID=LinkButton1 PopupControlID=RoundedPanel1 BackgroundCssClass=modalBackground CancelControlID=btnCancel Drag=True /› ‹/cc2:RoundedPanel›, где LinkButton1 — кнопка входа. теперь я хочу снова показать этот экран, когда пользователь нажимает на список пользователей, но не вошел в систему. теперь кто-нибудь может сказать мне, что мне делать? и я не хочу скрывать кнопку UserList, потому что она сочетается с некоторыми другими кнопками, которые сделают ее неправильной. вот почему я использую этот способ .. - person ; 07.07.2009
comment
Я отредактировал свой ответ выше, чтобы отразить тот факт, что вы используете элемент управления ModalPopupExtender. Я надеюсь, что это поможет направить вас в правильном направлении. - person Tim S. Van Haren; 07.07.2009
comment
Большое СПАСИБО... ваше решение было действительно полезным. но теперь появилась новая проблема. в приложении есть изменения, и теперь кнопка «Войти» является единственной кнопкой ссылки на странице. Список пользователей включен в меню и теперь является гиперссылкой.. что мне теперь делать? - person ; 08.07.2009
comment
Использует ли страница UserList эту главную страницу, которую мы обсуждаем? - person Tim S. Van Haren; 08.07.2009
comment
Я обновил свой ответ, чтобы отразить, что элемент управления UserList теперь является гиперссылкой, а не LinkButton. - person Tim S. Van Haren; 09.07.2009
comment
HyperLinkUserList - это не совсем гиперссылка. Я не сохранил ее из панели инструментов. я использовал меню... и UserList является пунктом меню. так что это гиперссылка таким образом. подскажите, пожалуйста, альтернативный метод для HyperLinkUserList.Attributes.Add(onclick, document.getElementById(' + LinkButtonLogin.ClientID + ').click();); - person ; 10.07.2009