C # asp.net cclick событие запускается дважды - PullRequest
0 голосов
/ 25 мая 2019

У меня есть событие click в коде C # файла, который отправляет электронное письмо, все работает нормально, за исключением того, что оно отправляет электронное письмо дважды.

Я попробовал рекомендуемое решение и установил AutoEventWireup="false", это делаетничего, он все равно отправляет письмо дважды.

Есть идеи?

Заранее спасибо

Установите <% @Page AutoEventWireup="true" %> на false.

protected void cmdNotify_Click(object sender, EventArgs e)
{
    newmail = new mymail();
    newmail.SendMail();
}

Письмо отправляется дважды.

1 Ответ

1 голос
/ 25 мая 2019

Я не уверен, почему люди предлагают отключить AutoEventWireup.Не делайте этого, если вы не хотите вручную подключать события.Например, вам нужно написать следующую строку, чтобы любой код в обработчике событий Page_Load выполнялся при запросе страницы:

Load += new EventHandler(Page_Load);

Итак, пусть AutoEventWireupего значение по умолчанию (true) и убедитесь, что в вашем коде нет такого кода.

Еще одна важная вещь, которую нужно понять, это то, что это связано не с отправкой электронной почты как таковой, а с жизненным цикломтвоя страница.У вас может быть код в Page_Load, который запускает код отправки почты или даже код JavaScript, который вызывает событие.Убедитесь, что это не так, очистив свой код.Например, вы можете начать сначала со следующей страницы примера, на которой показано, что обычно события нажатия кнопки генерируются только один раз за запрос, и постепенно добавляйте к ней свой код:

ASPX

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebApplication1.WebForm1" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
        <div>
            <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />
            <br />
            <br />
            <asp:Label ID="Label1" runat="server"></asp:Label>
        </div>
    </form>
</body>
</html>

Код позади

namespace WebApplication1
{
    public partial class WebForm1 : System.Web.UI.Page
    {
        private static int times = 0;

        protected void Page_Load(object sender, EventArgs e)
        {
        }

        protected void Button1_Click(object sender, EventArgs e)
        {
            times++;
            Label1.Text = times.ToString();
        }
    }
}

Надеюсь, это поможет.Я использую Visual Studio 2017 и целевой платформой является .NET Framework 4.6.1.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...