2013-09-21 3 views
0

J'ai un formulaire pour envoyer un courriel dans asp.net mvc4 lorsque l'utilisateur clique sur le bouton Soumettre, après l'email envoyé avec succès toute la zone de texte dans mon formulaire devenir videComment puis-je changer la valeur de la zone de texte dans le contrôleur dans ASP.NET MVC 4

mon code de la vue:

@using (Html.BeginForm()) { 
<table cellpadding="5px;"> 
    <tr> 
     <td>@Html.Label("Name")</td> 
     <td>@Html.TextBoxFor(m => Model.Name)</td> 
     <td class="error">@Html.ValidationMessageFor(m => Model.Name)</td> 
    </tr> 
    <tr> 
     <td>@Html.Label("From")</td> 
     <td>@Html.TextBoxFor(m => Model.From)</td> 
     <td class="error">@Html.ValidationMessageFor(m => Model.From)</td> 
    </tr> 
    <tr> 
     <td>@Html.Label("Email")</td> 
     <td>@Html.DropDownList("Email",new SelectList(Emaillist,"Value","Text"))</td> 
     <td class="error">@Html.ValidationMessageFor(m => Model.Email)</td> 
    </tr> 
    <tr> 
     <td>@Html.Label("Subject")</td> 
     <td>@Html.TextBoxFor(m => m.Subject)</td> 
     <td class="error">@Html.ValidationMessageFor(m => Model.Subject)</td> 
    </tr> 
    <tr> 
     <td>@Html.Label("Text")</td> 
     <td>@Html.TextAreaFor(m => m.Body)</td> 
     <td class="error">@Html.ValidationMessageFor(m => Model.Body)</td> 
    </tr> 
     <tr> 
     <td> <input id="Submit1" type="submit" value="Send" /></td> 
     <td></td> 
    </tr> 
</table> 
<br/> 
<br/> 

<span style="color: red; font-size: 14px;">@ViewBag.Message</span> 
} 

mon code contrôleur:

[HttpPost] 
    public ActionResult Contact(Contact contact) 
    { 
     if (ModelState.IsValid) 
     { 

      try 
      { 
       MailAddress fromAddress = new MailAddress("MyEmail Address"); 
       MailAddress toAddress = new MailAddress(contact.Email); 
       const string fromPassword = "My Password Address"; 
       string subject = contact.Subject; 
       string body = "From: " + ViewBag.Name + "\nEmail: " + contact.From + "\n\n\n Body: " + contact.Body; 
       SmtpClient smtp = new SmtpClient(); 
       smtp.Host = "Host"; 
       smtp.Port = port; 
       smtp.EnableSsl = false; 
       smtp.DeliveryMethod = SmtpDeliveryMethod.Network; 
       smtp.UseDefaultCredentials = false; 
       smtp.Credentials = new NetworkCredential(fromAddress.Address, fromPassword); 

       MailMessage message = new MailMessage(fromAddress, toAddress); 
       message.Subject = subject; 
       message.Body = body; 

       smtp.Send(message); 
       ViewBag.Message = "Your message send successfully "; 
       return View("Contact"); 
      } 
      catch (Exception ex) 
      { 

       ViewBag.Message = "Your message doesn't send, please try again" + "\n" + ex.Message; 
      } 
     } 
     return View(); 
    } 

Comment puis-je modifier la valeur du champ de saisie dans le contrôleur après l'envoi e-mail?

quel code devrais-je ajouter après "smtp.Send (message)" pour que ma zone de texte apparaisse vide?

+0

Avez-vous essayé quelque chose du côté client, comme jQuery ?? – kandroid

Répondre

1

Si vous souhaitez afficher les valeurs après l'envoi du courrier

return View("Contact", contact); 

Si vous voulez effacer les valeurs alors soit des valeurs de consigne vide manuellement comme contact.Subject = « »; ... etc, et retourne ci-dessus OU vous pouvez créer un nouvel objet de contact et le passer avec vue

return View("Contact", new Contact()); 
+0

merci mais votre code vide ma classe Contact.Les valeurs que l'utilisateur a saisies restent dans la page –

0

Vous devez renvoyer votre modèle de vue à la vue à la fin de l'ActionResult.

return View("Contact", contact); 
Questions connexes