Показать ModalPopupExtender1 из кода после сохранения данных с помощью веб-формы asp.net - PullRequest
0 голосов
/ 07 марта 2012

Проблема решена ...

У меня есть простая веб-форма, в которой мне нужно сохранить адрес электронной почты и сообщить пользователю об успешном или неудачном обращении в модальном окне, и я хочу выполнить проверку и обработать код, а затем показать модальное окно.

Прямо сейчас, когда я нажимаю на кнопку подписки, он быстро показывает модальное окно без выполнения codebehind / server side code. Пожалуйста, найдите образец кода ниже

    <asp:ModalPopupExtender ID="ModalPopupExtender1" BackgroundCssClass="modalBackground" runat="server" PopupControlID="pnlMSG" CancelControlID="btnSubscribe"
     TargetControlID="HiddenField1">
    </asp:ModalPopupExtender>



Продолжить просмотр

                <asp:Label ID="lblSubscriptionText" CssClass="lblfooterSubscribe" 
                    runat="server" Text="Enter your email to subscribe to our Newsletter" 
                    meta:resourcekey="lblSubscriptionTextResource1"></asp:Label>
                <asp:TextBox ID="txtSubscribeEmail" runat="server" CssClass="txtSubEmail" 
                    meta:resourcekey="txtSubscribeEmailResource1"></asp:TextBox>
                <asp:Button ID="btnSubscribe" runat="server" Text="Subscribe" 
                    CssClass="SubEmailBtn" ValidationGroup="SubEmail" 
                    onclick="btnSubscribe_Click" meta:resourcekey="btnSubscribeResource1" />

        <asp:HiddenField ID="HiddenField1" runat="server" />  

protected void btnSubscribe_Click(object sender, EventArgs e)
{
    //Regex reg = new Regex(@"\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*");
    string email = txtSubscribeEmail.Text;
    email = Helper.SafeSqlLiteral(email, 2);
    string strSql = "INSERT INTO Subscribe (email, subscribeDate,Language)";
    strSql += "VALUES ('" + email + "','" + DateTime.Now.ToString("yyyy/MM/dd") + "','" + Session["lang"].ToString() + "')";
    int result = 0;
    result = DataProvider.intConnect_Select(strSql);
    lblSubEmailMSG.Visible = true;
    btnSubscribe.Enabled = false;
    //Response.Redirect(HttpContext.Current.Request.Url.AbsoluteUri);
    // System.Threading.Thread.Sleep(2000);
    this.ModalPopupExtender1.Show();
}

Я попытался удалить свойство TargetControlID = "btnSubscribe" из modalPopupExtender, но он выдал ошибку, указав, что TargetControlID не может быть нулевым или пустым, даже при удалении TargetControlID выдается ошибка.

Если я использую скрытое поле в качестве идентификатора TargetControl, он выполняет кодовый код, но выполняет полный пост обратно и не отображает модальное окно

Подскажите, пожалуйста, как я могу передать эту функциональность ..

Что я сделал? Я решил проблему, указав TargeControl в качестве скрытого поля, и я также использовал response.redirect, который по ошибке я оставил без комментариев. Теперь работает нормально

Ответы [ 2 ]

0 голосов
/ 07 марта 2012

Рад, что вы решили свою проблему. Пожалуйста, обратите внимание

  1. Кажется, много работы для показа модального сообщения. Возможно, вы захотите попробовать и взглянуть на [JQModal], это довольно просто для вашего требования 1
  2. Ваш текущий код подвергается атаке SQL-инъекций. Пожалуйста, используйте параметризованные запросы, где это возможно, чтобы быть в безопасности Параметризованные запросы
0 голосов
/ 07 марта 2012

ВЫПУСК РЕШЕНО

Что я сделал? Я решил проблему, указав TargeControl в качестве скрытого поля, и я также использовал response.redirect, который по ошибке я оставил без комментариев. Теперь работает нормально

...