2012-04-05 2 views
-1
<div class="row"> 
           <label for="email">E-mail Address</label> 
           <div class="col"> 
            <div class="text"><asp:TextBox ID="TextBox2" runat="server" 
              onchange="javascript:updateHiddenField();"></asp:TextBox><asp:HiddenField ID="HiddenField1" 
               runat="server" /> 
            </div> 
            <span>Find e-mail on <a href="#">My Address Book</a>/<a href="#">Contacts</a></span> 
            <span>Find e-mail on 
             <asp:HyperLink ID="HyperLink1" runat="server">Facebook Profile</asp:HyperLink></span> 
           </div> 
          </div> 
          <div class="row"> 
           <label>Invite Type</label> 
           <div class="col"> 
            <div class="inner-row"> 
             <asp:RadioButton runat="server" ID="r1" Checked="true" GroupName="r" 
              /> 
             <label for="id-1"><em>Personalized</em> - Add a personal note to your invitation. This invite type will let your friend know of your identity and will include your personal note</label> 
            </div> 
            <div class="inner-row"> 
             <asp:RadioButton runat="server" ID="r2" GroupName="r" /> 
             <label for="id-2"><em>Anonymous</em> - Sending an invite anonymously will not reveal your indentity to your friend.</label> 
            </div> 
           </div> 
          </div> 
          <div class="row"> 
           <label for="message">Personal Note</label> 
           <div class="col"> 
            <div class="textarea"> 
             <div class="textarea-holder"> 
              <asp:TextBox ID="TextBox1" runat="server" TextMode="MultiLine" Rows="10" 
               Columns="30" onchange="javascript:updateHiddenField1();"></asp:TextBox><asp:HiddenField 
               ID="HiddenField2" runat="server" /> 
             </div> 
            </div> 
            <span class="text-note">Including a note is optional, but isn’t<br />personalized messages always nice :)</span> 
           </div> 
          </div> 
<asp:LinkButton ID="LinkButton6" runat="server" onClick="LinkButton6_Click" CssClass="btn-send"></asp:LinkButton> 

Это мой ASPX код и я пытаюсь передать значение первым из текстового поля затем скрытые, а затем CodeBehindЗначения не передаются из javascript в codebehind asp.net?

<script type="text/javascript"> 
    function updateHiddenField() { 
     document.getElementById('HiddenField1').value = document.getElementById('TextBox2').value; 

    } 

    function updateHiddenField1() { 
     document.getElementById('HiddenField2').value = document.getElementById('TextBox1').value 
    } 
</script> 

Значение становится отображаться, когда я сделать alert(document.getElementById('HiddenField1').value);

Однако они не являются передается CodeBehind

public void LinkButton6_Click(object sender, EventArgs e) { 

try{ 
      System.Net.Mail.MailMessage mail = new System.Net.Mail.MailMessage(); 
      mail.Subject = ""; 
      mail.Body = HiddenField1.Value; 
      mail.To.Add(HiddenField2.Value); 

      ////send the message 

      System.Net.Mail.SmtpClient mySmtpClient = new System.Net.Mail.SmtpClient(); 
      System.Net.NetworkCredential myCredential = new System.Net.NetworkCredential("",""); 
      //mySmtpClient.Port="25"; 
      mySmtpClient.Host = ""; 
      mySmtpClient.UseDefaultCredentials = false; 
      mySmtpClient.Credentials = myCredential; 
      mySmtpClient.Send(mail); 
     } 
     catch (Exception ex) 
     { 
      Response.Write(ex.ToString()); 
     } 

enter image description here

EDIT:

  1. Я попытался с помощью mail.Body = TextBox2.Text; mail.To.Add(TextBox1.Text);

  2. Я попытался без UpdatePanel

  3. Код в CSS всплывающего окна, что является главной проблемой

AS предложил, что я использовал кнопку html для вызова функции javascript

function btn_click() { 
     var email = document.getElementById('HiddenField1').value; 
     var body = document.getElementById('HiddenField2').value; 

    } 

Как я передать это значение в качестве моих полномочий в ASP.Net

Пожалуйста, помогите

+1

Почему вы не просто использовать значения TextBox в вашем коде? – jrummell

+0

Я пробовал, что он не работает с той же ошибкой, поэтому попробовал использовать эту же вещь и здесь –

+0

Это в UserControl или есть что-то еще, что может быть не очевидно из ваших образцов кода? – jrummell

ответ

2
<script type="text/javascript"> 
function SendForm() { 

     var email = $get("TextBox2").value; 
     var message = $get("TextBox1").value; 

     PageMethods.SendForm(email, message, 
    OnSucceeded, OnFailed); 
    } 

    function OnSucceeded() { 
     // Dispaly "thank you." 
     $get("ContactFieldset").innerHTML = "<p>Thank you!</p>"; 
    } 

    function OnFailed(error) { 
     // Alert user to the error. 
     alert(error.get_message()); 
    } 
</script> 

и в ASP.Net код позади использования:

[WebMethod] 
public static void SendForm(string email, string message) 
{ 


    System.Net.Mail.MailMessage mail = new System.Net.Mail.MailMessage(); 
     mail.Subject = ""; 
     mail.From = new MailAddress(""); 
     mail.Body = message; 
     mail.To.Add(email); 

     ////send the message 

     System.Net.Mail.SmtpClient mySmtpClient = new System.Net.Mail.SmtpClient(); 
     System.Net.NetworkCredential myCredential = new System.Net.NetworkCredential("",""); 
     //mySmtpClient.Port="25"; 
     mySmtpClient.Host = ""; 
     mySmtpClient.UseDefaultCredentials = false; 
     mySmtpClient.Credentials = myCredential; 
     mySmtpClient.Send(mail); 



    if (string.IsNullOrEmpty(email)) 
    { 
     throw new Exception("You must supply an email address."); 
    } 

    if (string.IsNullOrEmpty(message)) 
    { 
     throw new Exception("Please provide a message to send."); 
    } 

    // If we get this far we know that they entered enough data, so 
    // here is where you would send the email or whatever you wanted 
    // to do :) 
} 

Это должно быть хорошо для вас :)

+0

Brilliant thanks :) –

0

Вы не хотите, чтобы прочитать значение прямо из TextBox на коде?

mail.Body = TextBox1.Text; 
+0

Это не работает для меня, пожалуйста, просмотрите мои комментарии к сообщению –

+0

В противном случае я woudnt пробовал этот подход после всех –

0

Вы ввод адреса электронной почты в TextBox2, а затем скопировать его к HiddenField1 но читать HiddenField2 адрес в фоновом коде. Аналогично, вы вводите тело письма в TextBox1, а затем копируете его в HiddenField2, но затем читаете HiddenField1 в коде с кодом (эта замена между 1 и 2 на клиенте бесполезно запутывает). При тестировании значений в скрытых полях вы заполняете оба текстовых поля данными?

0

Прежде всего, я думаю, что вы должны удалить скрытые поля и все, что с ним связано (функции javascript). Сосредоточьтесь на том, что вызывает проблему не в решении, проблема в том, что значения текстового поля не отправляются обратно на сервер. Когда вы в конечном итоге получите его для работы со скрытым полем, проблема может все еще существовать. Хотя вы уже выяснили, что скрытые поля имеют те же проблемы, что и исходные текстовые поля.

Разделительные проблема:

1) значения фактически размещены на сервер? (вы можете проверить это с помощью сборки браузера в инструментах разработчика или плагине, таком как HttpWatch, в худшем случае вы можете использовать снифер)

2) Убедитесь, что обновляемые панели не мешают отключить функциональность ajax/updatepanel. (вы можете сделать это, установив EnablePartialRendering в false на вашем ScriptManager, который обычно находится на главной странице). Хотя это не имеет значения.

3) Когда вы подтвердили, что правильные значения фактически отправлены на сервер, убедитесь, что в Page_Load (или аналогичной функции) нет странной логики, которая перезаписывает значения обратной передачи, которые обрабатываются непосредственно перед OnLoad. Это может быть некоторая инициализация, которая должна выполняться только тогда, когда она не является обратной.

4) Убедитесь, что элементы управления существуют, когда обрабатываются переменные пост-обратно, в противном случае значения после обратной связи игнорируются. Вы заметили, что код находится в «всплывающем окне» CSS, убедитесь, что это всплывающее окно существует (в коллекции элементов управления), когда обрабатываются переменные пост-обратно.

+0

Я прекратил использовать кнопку asp.net Я использую кнопку отправки вместо 'var email = document.getElementById (' HiddenField1 ').стоимость; var body = document.getElementById ('HiddenField2'). Value; ' есть способ передать это на обработку smtp –

Смежные вопросы