Запустить диалог JQuery с помощью кнопки ASP.NET? - PullRequest
1 голос
/ 19 марта 2009

У меня есть страница, на которой есть элемент управления с двумя текстовыми полями (имя пользователя и пароль) и кнопка asp :. Если срок действия членства пользователя истекает в течение 30 дней, а кнопка нажата, я хочу, чтобы всплыло диалоговое окно JQuery. Внутри диалога JQuery у меня есть текст и asp: LinkButton. К кнопке ссылки прикреплено событие, но оно не запускается, когда я щелкаю по нему в диалоговом окне. Вот теги скрипта для JQuery:

<script type="text/javascript" src="jquery-1.3.2.js"></script>
<script type="text/javascript" src="ui.core.js"></script>
<script type="text/javascript" src="ui.draggable.js"></script>
<script type="text/javascript" src="ui.resizable.js"></script>
<script type="text/javascript" src="ui.dialog.js"></script>

Вот сценарий диалогового окна: для тестирования я закрываю диалоговое окно при нажатии кнопки «Обновить членство», но на самом деле я хочу, чтобы он вызвал метод, который я создал в asp.net, чтобы направить пользователя на другую страницу и пропустить сеанс. переменная.

<script type="text/javascript">
    $(document).ready(function() {
        $("#dialog").dialog({
         // autoOpen: false,
            modal: true,
            buttons: { "Renew Membership": function() { $(this).dialog("close"); } }
        });
    });
</script>

<asp:Content ID="mainContent" runat="server" ContentPlaceHolderID="Content">
<div id="dialog" title="Membership Renewal">
    <p>Uh Oh! Your membership is going to expire.</p><br />
    <p>Hurry up and renew today!</p><br />
    <asp:LinkButton runat="server" Text="Click Here to Renew" 
        onclick="Unnamed2_Click"></asp:LinkButton>
</div>

Вот событие щелчка для LinkButton:

protected void Unnamed2_Click(object sender, EventArgs e)
{
    UserProfiles userProfile = (UserProfiles)Session["userProfile"];
    Response.Redirect("~/Renew.aspx");
}

Что должно произойти, так это то, что когда пользователь нажимает кнопку входа в систему, он должен всплывать в диалоговом окне только в том случае, если дни, которые у него осталось, истекают <= 30, и если они это делают, у него есть возможность щелкнуть ссылку в диалоге и переходе на страницу обновления, где я хочу передать ей переменную Session с профилем, но она не вызывается, поэтому, я думаю, я хотел бы знать, как я могу добавить обработчик события кнопки в диалоговое окно и есть ли способ установить его так, чтобы он появлялся только один раз, например, добавить cookie в браузер пользователей и показывать его, только если у них нет набора cookie. </p>

1 Ответ

1 голос
/ 19 марта 2009

Я полагаю, что это больше проблема ASP.NET, а не проблема диалога jQuery.

Я бы не использовал onClick и PostBackUrl в одном LinkButton. Итак, снимите атрибут PostBackUrl и вместо этого используйте

protected void Unnamed2_Click(object sender, EventArgs e){
    UserProfiles userProfile = (UserProfiles)Session["userProfile"];
    Response.Redirect("~/Renew.aspx");
}

Если вам нужно только показать элемент управления, когда пользователь> 30 дней. Я бы создал пользовательский элемент управления.

jquery.renewDialog.js

$(document).ready(function() {
    $("#dialog").dialog({
        modal: true
    });
});

RenewalUserControl.ascx

<asp:ScriptManager runat="server" id="ScriptManager1">
  <Scripts>
    <asp:ScriptReference Path="jquery.renewDialog.js" />
  </Scripts>
</asp:ScriptManager>
<div id="dialog" title="Membership Renewal">
    <p>Uh Oh! Your membership is going to expire.</p><br />
    <p>Hurry up and renew today!</p><br />
    <asp:LinkButton runat="server" Text="Click Here to Renew" 
        onclick="Unnamed2_Click" />
</div>

Login.aspx

<uc1:RenewalUserControl runat="server" ID="RenewalUserControl1" Visible="false" />

Login.aspx.cs

if (user.IsExpired)
{
  RenewalUserControl1.Visible = true;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...