2017-08-28 1 views
1

Je suis débutant dans MVC et en essayant d'effacer les données des champs de texte après l'envoi de l'email. J'ai envoyé l'e-mail avec succès mais les données ne sont pas supprimées après l'envoi de l'e-mail. J'ai essayé beaucoup de solutions, mais je n'obtiens pas les bons résultats. Donc qu'est ce que je devrais faire?Après avoir envoyé l'e-mail effacer les données des champs de texte dans MVC

Create.cshtml

@using (Html.BeginForm()) 
{ 
    @Html.AntiForgeryToken() 

    <div class="form-horizontal"> 
     @Html.ValidationSummary(true, "", new { @class = "text-danger" }) 
     <div class="form-group" id="name"> 
      @Html.LabelFor(model => model.Name, htmlAttributes: new { @class = "control-label" }) 
      @Html.EditorFor(model => model.Name, new { htmlAttributes = new { @class = "form-control input-lg" } }) 
      @Html.ValidationMessageFor(model => model.Name, "", new { @class = "text-danger" }) 
     </div> 

     <div class="form-group" id="email"> 
      @Html.LabelFor(model => model.Email, htmlAttributes: new { @class = "control-label" }) 
      @Html.EditorFor(model => model.Email, new { htmlAttributes = new { @class = "form-control input-lg" } }) 
      @Html.ValidationMessageFor(model => model.Email, "", new { @class = "text-danger" }) 
     </div> 

     <div class="form-group" id="comment"> 
      @Html.LabelFor(model => model.Comments, htmlAttributes: new { @class = "control-label" }) 
      @Html.EditorFor(model => model.Comments, new { htmlAttributes = new { @class = "form-control input-lg comments" } }) 
      @Html.ValidationMessageFor(model => model.Comments, "", new { @class = "text-danger" }) 
     </div> 

     <div class="form-group"> 
      <input id="success" type="submit" value="Get In Touch" class="btn btn-primary btn-block btn-lg btn-login" /> 
      @*<a class="btn btn-primary btn-block btn-lg" onclick="SendEmail()" >click to send email</a>*@ 
     </div> 

FeedbacksController.cs

[HttpPost] 
[ValidateAntiForgeryToken] 
public ActionResult Create([Bind(Include = "Id,Name,Email,Comments")] Feedback feedback) 
{ 
    if (ModelState.IsValid) 
    { 
     bool result = false; 
     db.Feedbacks.Add(feedback); 
     db.SaveChanges(); 
     result = SendEmail("[email protected]", "Feedback", "<p>Hi Admin,<br/>My name is "+ feedback.Name + ". <br/> E_mail ID: " + feedback.Email + "<br/><br/>" + feedback.Comments + "<br/>Kind Regards,<br/>" + feedback.Name + "</p>"); 

     return View(); 
    } 
    return View(feedback); 
} 
+2

Suivre le modèle PRG et utilisez 'retour RedirectToAction ("Créer");' (non 'retour View();') –

+0

Vous pouvez réinitialiser les propriétés du modèle avant de retourner la vue –

+0

@SouvikGhosh Comment puis-je faire ? –

Répondre

3

côté serveur

Ajouter ce code après l'envoi email en action

ModelState.Clear(); 
+1

Ainsi, dans le cas où l'email n'est pas envoyé avec succès, les champs de formulaire seraient réinitialisés. –

+0

@SouvikGhosh Vous avez dit vrai, j'ai édité cela. –

+1

@NabiaSaroosh ajouter 'ModelState.Clear();' avant 'return View()' –