2016-09-03 46 views
0

これは私のクラッカーを牽引しています、それは非常に基本的なコード、ちょうど非常に基本的な3つのテキストボックス連絡フォームとリンクボタンです。linkbutton OnClickが起動しないのはなぜですか?

<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, "[email protected]"); 
      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がコード内にさえいなくて、ちょうどダミーのボタンのようです。私は何を逃したのですか?

+0

formタグがマスターページにすでにありますあなたのPage_Loadコード – Webruster

答えて

0

リンクボタンでCauseValidation="false"を試してください。

同様:

<asp:LinkButton ID="lnkSubmit" runat="server" OnClick="lnkSubmit_Click" 
    CauseValidation="false" CssClass="btn standard-hover-effect bg-red btn-lg btn-block"> 
0

あなたは.NETサーバーコントロールを使用しているので、あなたは、フォーム内にそれらをラップする必要がformタグの内側に

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


<!--your html--> 

</form> 

をあなたのhtmlを包みます。 runat="server" http://forums.asp.net/t/1463877.aspx?Does+an+aspx+must+have+a+form+tag+

+0

をご提示ください。 –

+0

@bigyetiマスターページのcsファイルに関数を移動すると、それは動作しますか? – Robert

+0

ボタンにCausesValidation = falseを追加したので、これで動作します。しかし、私はrecaptchaを次に追加したいので、私は再び問題に遭遇するかもしれないと思う。 –

0

を追加することを忘れないでください。おそらく、あなたのPage_Loadの中でIsPostBackプロパティ条件を追加するのを忘れ

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

ASP.NETページのライフサイクルを見てみましょう:https://msdn.microsoft.com/en-us/library/ms178472.aspx IsPostBackプロパティ:https://msdn.microsoft.com/en-us/library/system.web.ui.page.ispostback(v=vs.110).aspx

+0

すでに最初の読み込み時に隠された2つのパネルがあります。 –

関連する問題