Это сводит меня с ума, это очень простой код, просто очень простая контактная форма с тремя текстовыми полями и кнопка ссылки.

<div class="form-group has-feedback">
<asp:Label ID="lblYourName" AssociatedControlID="txtYourName" CssClass="col-sm-3 control-label" runat="server" Text="Your name"></asp:Label>
 <div class="col-sm-6">
 <asp:TextBox ID="txtYourName" TextMode="SingleLine" CssClass="form-control" runat="server" placeholder="Your name"></asp:TextBox>
 <span class="glyphicon glyphicon-user form-control-feedback"></span>
 <asp:Label ID="lblNoName" runat="server" Visible="false" Text="Please enter your name"></asp:Label>
 </div>
 </div>
 <div class="form-group has-feedback">
 <asp:Label ID="lblEmail" runat="server" AssociatedControlID="txtEmail" Text="Email" CssClass="col-sm-3 control-label"></asp:Label>
 <div class="col-sm-6">
 <asp:TextBox ID="txtEmail" CssClass="form-control" runat="server" placeholder="Email" TextMode="Email"></asp:TextBox>
 <span class="glyphicon glyphicon-envelope form-control-feedback"></span>
 <asp:Label ID="lblNoEmail" runat="server" Visible="false" Text="Please enter your email"></asp:Label>
 </div>
 </div>
 <div class="form-group">
 <asp:Label ID="lblMessage" AssociatedControlID="txtMessage" CssClass="col-sm-3 control-label" runat="server" Text="Your message"></asp:Label>
 <div class="col-sm-6">
 <asp:TextBox ID="txtMessage" CssClass="form-control" TextMode="MultiLine" placeholder="Your message" runat="server"></asp:TextBox>
 </div>
 </div>
 <div class="row">
 <div class="col-sm-offset-3 col-sm-6">
 <asp:LinkButton ID="lnkSubmit" runat="server" OnClick="lnkSubmit_Click"  CssClass="btn standard-hover-effect bg-red btn-lg btn-block">
 <span class="text">Contact us <i class="fa fa-arrow-right"></i></span>
 </asp:LinkButton>

 </div>
 </div>

OnClick кнопки ссылки указывает на этот простой метод MailMessage, где он проверяет, заполнены ли поля имени и электронной почты, а затем отправляет электронное письмо.

protected void lnkSubmit_Click(object sender, EventArgs e)
    {
        lblNoName.Visible = false;
        lblNoEmail.Visible = false;
        if (string.IsNullOrEmpty(txtYourName.Text) || string.IsNullOrEmpty(txtEmail.Text))
        {
            if (!string.IsNullOrEmpty(txtYourName.Text))
            {
                lblNoName.Visible = false;
            }
            else
            {
                lblNoName.Visible = true;
            }
            if (!string.IsNullOrEmpty(txtEmail.Text))
            {
                lblNoEmail.Visible = false;
            }
            else
            {
                lblNoEmail.Visible = true;
            }
        }
        else
        {
            MailMessage mm = new MailMessage(txtEmail.Text, "foo@bar.com");
            mm.Subject = "Feedback from website";
            mm.Body = "Email from " + txtYourName.Text + "<br /><br />" + txtMessage.Text;
            SmtpClient smtp = new SmtpClient();
            smtp.Host = "mail.websitelive.net";
            smtp.Send(mm);
            panContactThanks.Visible = true;
        }
    }

Но когда я нажимаю кнопку отправки, ничего не происходит. Совсем. OnClick даже не срабатывает, поэтому точка останова в коде даже не вызывается. Как будто OnClick даже нет в коде, это просто фиктивная кнопка. Что я упустил?

2
user4135018 3 Сен 2016 в 17:04

3 ответа

Лучший ответ

Пожалуйста, попробуйте CauseValidation="false" в кнопке ссылки.

Подобно:

<asp:LinkButton ID="lnkSubmit" runat="server" OnClick="lnkSubmit_Click"  
    CauseValidation="false"  CssClass="btn standard-hover-effect bg-red btn-lg btn-block">
1
5377037 30 Ноя 2017 в 19:26

Оберните свой html внутри тега формы

<form id="someForm" runat="server">


 <!--your html-->

</form>

Вы используете серверные элементы управления .net, поэтому вам нужно обернуть их внутри формы. Не забудьте добавить runat="server" http: //forums.asp .net / t / 1463877.aspx? Должен + + aspx + иметь + + форму + тег +

0
Robert 3 Сен 2016 в 14:15

Возможно, вы забыли добавить условие isPostBack в свой Page_load

protected void Page_Load(object sender, EventArgs e)    
{
    if(!IsPostBack)
    {
        //Control initialization here
    }
}

Взгляните на жизненный цикл страницы ASP.NET: https://msdn.microsoft. ru / en-us / library / ms178472.aspx IsPostBack: https: //msdn.microsoft.com/en-us/library/system.web.ui.page.ispostback(v=vs.110).aspx

0
Renan Araújo 3 Сен 2016 в 20:48