【问题标题】:c# asp.net send mail issuec# asp.net发送邮件问题
【发布时间】:2012-12-08 22:06:00
【问题描述】:

我创建了一个 Web 应用程序,用户可以在其中发送好友请求。如果有两个用户 AB。如果 A 用户向 B 发送好友请求,则 B 用户仪表板上会弹出一个显示。在该弹出框中,有两个按钮确认忽略

如果用户点击确认按钮,那么关闭该弹出框需要一些时间。因为在后台它执行发送电子邮件的代码。发送电子邮件后,该弹出框将关闭。所以我想在点击 confirm 按钮后立即关闭该弹出框,然后向该用户发送邮件。

这是我的接受请求和发送邮件的代码

#region dlUserFriendRequests_ItemCommand
    protected void dlUserFriendRequests_ItemCommand(object source, DataListCommandEventArgs e)
    {
        HtmlTable objDataTable;
        //Panel objDataTable;
        switch (e.CommandName)
        {
            case "confirm":
                RadioButtonList objRadioButtonList;
                int intFriendRelationID = -1;
                objRadioButtonList = (RadioButtonList)e.Item.FindControl("rblstFriends");

                if (objRadioButtonList != null)
                {
                    intFriendRelationID = UserManagementBL.AcceptUserFriendRequest(Convert.ToInt32(e.CommandArgument), this.LoginSessionDO.UserID, objRadioButtonList.SelectedItem.Text);

                    if (intFriendRelationID > 0)
                    {
                        int SentByUserID = Convert.ToInt32(e.CommandArgument);
                        DataTable dtbSenderdetails = null;
                        string SenderEmail = "";

                        dtbSenderdetails = UserManagementBL.GetUserDetails(SentByUserID);
                        if (dtbSenderdetails != null)
                        {
                            SenderEmail = dtbSenderdetails.Rows[0]["UserName"].ToString();
                            SendConfirmationMail(SenderEmail);
                            Response.Redirect("~/Dashboard/Dashboard.aspx",false);                                
                            //GetUserFriendRequests();
                        }
                    }
                }
              break;    

              case "Ignore":
                int intFriendRequestID = -1;
                intFriendRequestID = UserManagementBL.IgnoreUserFriendRequest(Convert.ToInt32(e.CommandArgument), this.LoginSessionDO.UserID);
                GetUserFriendRequests();
                break;
        }
   }
        #endregion

 #region Send confirmation mail
    public void SendConfirmationMail(string email)
    {
        //DataTable dtblUserDetails = UserManagementBL.GetUserByUserName(email);
        //if (dtblUserDetails != null)
        //{
            //int UserID = Convert.ToInt32(dtblUserDetails.Rows[0]["UserID"]);

            //string FirstName = Convert.ToString(dtblUserDetails.Rows[0]["FirstName"]);
            //string LastName = Convert.ToString(dtblUserDetails.Rows[0]["LastName"]);
            string FirstName = this.LoginSessionDO.FirstName;
            string LastName = this.LoginSessionDO.LastName;

            var parameters = new System.Collections.Generic.Dictionary<string, string>();
            parameters.Add("USER_NAME", string.Format("{0} {1}", FirstName, LastName));


            parameters.Add("USER_IMAGE_URL", string.Format(SystemConfiguration.GetSiteURL() + "UserControls/UserPhoto.ashx?UserID={0}", this.LoginSessionDO.UserID));

            string ToAddress = email;
            string subject = FirstName + "  " + LastName + " confirmed you as a friend on Lifetrons.";

            CommonFunctions.CommonFunctions.SendEmail(SystemConfiguration.GetEmailSenderAddress(), ToAddress, subject, CommonFunctions.EmailTemplates.AcceptFriendRequest, parameters);
        //}
    }
    #endregion

这是我的弹出框图片

那么如何在确认按钮点击后立即关闭该弹出框?我的代码有什么变化吗?

【问题讨论】:

  • 您可以异步发送确认邮件并关闭对话框.. 稍后更新请求状态
  • @amitd 谢谢你的回复 我试过在 response.redirect 之后调用方法,但它没有用。弹出框不关闭

标签: c# asp.net popup


【解决方案1】:

您可以在 JavaScript 中执行此操作。 我假设您已经在使用 AJAX 来执行 Confirm 操作,否则它只会重新加载页面并且您的弹出窗口不应该在那里(因为它们已经被确认?)。

如果你在前端有 jQuery,你可以使用:

$('#confirm-box-id').hide();

没有 jQuery,你可以使用:

document.getElementById('confirm-box-id').style.display = 'none';

重新阅读您的消息,看来这只是一个长期运行的操作。您应该注意,如果您使用上面的代码隐藏它并且不显示任何进度指示,例如,您的用户可能会离开或关闭浏览器,这可能会导致操作停止处理或在服务器端被强制终止,因此确认永远不会发生。

【讨论】:

  • @谢谢你的回复是的,这是一个漫长的行动。你是对的用户可以导航到另一个标签或页面
  • 这里我用于弹出
  • @Ajay 好的,您是否尝试过我的代码在弹出窗口运行时关闭它?
  • 我不知道我把那个查询放在哪里了?
  • @Ajay 在您的前端代码中,找到“确认”按钮并为其分配一个点击处理程序以调用此代码..
猜你喜欢
  • 2011-03-12
  • 1970-01-01
  • 1970-01-01
  • 2013-04-05
  • 1970-01-01
  • 2012-07-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多