2013-11-24 4 views
0

C#을 통해 전자 메일을 보내도록 코드를 추가하고 싶지만 단추가 작동하지 않는 것 같습니다.마스터 페이지가있는 webform에 C# 추가

HTML 코드 : 코드 aspx.cs

<div style="text-align:center"> 
    <p style="background-color: Yellow">if you have a video that you think should be here send it to us</p>Name: 
    <input type="text" id="Name" />Link: 
    <input type="text" id="Link" /> 
    <br />Why you think this video should be here: 
    <br /> 
    <textarea id="Why" rows="5" cols="50"></textarea> 
    <br /> 
    <input type="submit" id="submit" name="submit" value="Send" style="height: 25px; width: 200px" /> 
</div> 

왜하지만 버튼 아무것도 무슨 일이 생긴하지 누를 때 나도 몰라

public partial class Videos : System.Web.UI.Page 
{ 
    public string Answer; 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     Answer = "Email Sent2"; 
     if (Request.Form["submit"] != null) 
     { 
      Answer = "Email Sent3"; 
      string Name = Request.Form["Name"]; 
      string Link = Request.Form["Link"]; 
      string Why = Request.Form["Why"]; 
      string body = "<div dir='ltr'>"; 
      body += ("<h4>You got a new video idea from </h4>"); 
      body += (Name); 
      body += ("<br />"); 
      body += ("Link: " + Link); 
      body += ("<br />"); 
      body += ("Reason: " + Why); 
      body += ("</div>"); 

      var client = new SmtpClient("smtp.gmail.com", 587) 
      { 
       Credentials = new NetworkCredential("MY EMAIL", "MY PASS"), 
       EnableSsl = true 
      }; 
      System.Net.Mail.MailMessage mail1 = new System.Net.Mail.MailMessage(); 
      mail1.Body = body; 
      mail1.From = new System.Net.Mail.MailAddress("MY EMAIL"); 
      mail1.IsBodyHtml = true; 
      mail1.Subject = "Vidoe Idea By " + Name; 
      mail1.To.Add("MY EMAI"); 

      client.Send(mail1); 
      Answer = "Email Sent"; 
     } 
    } 

. 여기에 무슨 문제가 있습니까?

+1

키보드에 문제가 있습니까? HTML 입력 대신 asp : button 컨트롤을 사용하십시오. – geedubb

+0

먼저 "버튼을 눌러도 아무 것도 안된다"는 사용자 문제가 아니라 프로그래머가 아닌 코드를 디버깅하십시오. 여기 프로그래밍 문제가 있습니다. 둘째, 웹 양식이있는 HTML을 읽을 수 있는지 모르겠지만 를 사용하고 C#에서 txtName.Text 대신이 코드를 읽지 마십시오. ? 따라서 코드를 디버그하고 작동하지 않는 부분을 검색 한 다음 다시 알려주십시오. –

+0

내 코드를 debuged. 그것은 모두 if (Request.Form ..)까지 작동합니다. – KenigOri

답변

0

ASP.net에서 Webforms이 작동하는 방법에 대해 좀 더 연구해야합니다.

웹 폼은 VisualStudio의 도구 모음에서 찾을 수있는 서버 컨트롤과 함께 작동하도록 디자인되었습니다. 요청 객체는 여전히 작동하며 웹 폼의 백본입니다. 그러나 요청 개체에는 name 특성이 필요합니다. HTML 개체의 측면에서 ID은 클라이언트 쪽이고 name은 서버 쪽입니다. 이것은 지나치게 단순화 된 것이지만 유용한 가이드 라인입니다.

Webforms 또한 과도하게 이벤트 지향적이므로이 사실을 이용하고 버튼에 대한 클릭 이벤트를 사용해야합니다.

나는 다음과 같은 것을 사용합니다 :

HTML/영문

<div style="text-align:center"> 
    <p style="background-color: Yellow">if you have a video that you think should be here send it to us</p> 
    <!-- Use Label to create a label associated with the control 
    This is good practice --> 
    <asp:Label id="lblName" runat="server" AssociatedControlID="txtName" EnableViewState="false">Name:</asp:Label> 
    <asp:TextBox ID="txtName" runat="server"></asp:TextBox> 
    <br /><!-- Not really best practice to use <br /> for formatting, use CSS instead --> 
    <asp:Label ID="lblLink" runat="server" EnableViewState="false" AssociatedControlID="txtLink">Link</asp:Label> 
    <asp:TextBox ID="txtLink" runat="server"></asp:TextBox> 
    <br /> 
    <asp:Label ID="lblWhy" runat="server" EnableViewState="false" AssociatedControlID="txtWhy">Why you think this video should be here:</asp:Label> 
    <br /> 
    <asp:TextBox ID="txtWhy" TextMode="MultiLine" Rows="5" Columns="50" runat="server"></asp:TextBox> 
    <br /> 
    <asp:Button ID="btnSubmit" runat="server" Text="Send" 
      style="height: 25px; width: 200px" onclick="btnSubmit_Click"/> 
<!-- A Message to display when email has been sent --> 
<asp:Panel ID="pnlSucess" runat="server" Visible="false">Your feed back is appreciated!</asp:Panel> 
</div> 

.aspx.cs

protected void Page_Load(object sender, EventArgs e) 
{ 
    //Note: Nothing Here... 
    //Use this event for setting the page up 
} 

//Use this event for handling the click 
protected void btnSubmit_Click(object sender, EventArgs e) 
{ 
    //MAKE SURE YOU USE ERROR HANDLING FOR THE REAL WORLD 

    string Answer = string.Empty; 
    Answer = "Email Sent3"; 
    StringBuilder builder = new StringBuilder(); 

    //NOTE: You should be sanitising client input 
    string Name = txtName.Text; 
    string Link = txtLink.Text; 
    string Why = txtWhy.Text; 

    //String builder is a better way to build a string 
    //or look at string.Format();    
    builder.Append("<div dir='ltr'>"); 
    builder.AppendLine("<h4>You got a new video idea from </h4>"); 
    builder.AppendLine(Name); 
    builder.AppendLine("<br />"); 
    builder.AppendLine("Link: "); 
    builder.Append(Link); 
    builder.AppendLine("<br />"); 
    builder.AppendLine("Reason: "); 
    builder.Append(Why); 
    builder.AppendLine("</div>"); 

    var client = new SmtpClient("smtp.gmail.com", 587) 
    { 
     Credentials = new NetworkCredential("MY EMAIL", "MY PASS"), 
     EnableSsl = true 
    }; 
    System.Net.Mail.MailMessage mail1 = new System.Net.Mail.MailMessage(); 
    mail1.Body = builder.ToString(); //Get the body 
    mail1.From = new System.Net.Mail.MailAddress("MY EMAIL"); 
    mail1.IsBodyHtml = true; 
    mail1.Subject = "Vidoe Idea By " + Name; 
    mail1.To.Add("MY EMAI"); 

    client.Send(mail1); 
    Answer = "Email Sent"; 

    //Display a message so the user knows it worked! 
    pnlSucess.Visible = true; 
} 

은 Using 문에 using System.Net;를 추가해야합니다 코드의 맨 위에 이는 StringBuilder에 필요합니다.

0

웹 양식을 사용하는 경우 웹 양식 컨트롤을 사용하는 것이 좋습니다. 요소 :

<input type="text" id="Name" />Link: 
<input type="text" id="Link" /> 

RUNAT = "서버"태그 ID를 갖고 있지 않음이 서버 측에서 해당 코드 입력의 내용을 판독 할 필요가있다.

그리고 asp : 버튼을 사용하고 보내기 이메일 코드를 실행하는 이벤트를 할당해야합니다. 이 이벤트 페이지로드를 사용하는 경우,이 코드로 전송 된 이메일을 많이받을 수있는 포스트 백인지 확인하십시오.

내 웹 양식을 새로 만들고 asp : 입력란에 텍스트 상자를 추가하고 입력란에 asp : button을 추가하여 버튼에 이벤트를 만들고 거기에 코드를 추가하십시오. text 속성으로 내용을 읽고 코드를 디버깅하십시오.

관련 문제