2017-01-06 7 views
0

zu löschen Ich benutze asp.net Core-Rasierer-Engine. Nachdem ich Text in meinem TextArea eingegeben habe und auf die Senden-Schaltfläche geklickt habe, möchte ich den Text in der TexArea löschen. Ich konnte nicht herausfinden, wie man das mit html oder C# macht. Hier ist mein Code für die Gibt es eine Möglichkeit, eine @ Html.TextAreaFor

<h1>Add Your Comment</h1> 
       @using(Html.BeginForm("AddComment","Home")) 
       { 
        <p> 
         <label>Your Comment</label> 
         @Html.TextAreaFor(d=>d.comment) 
         @Html.ValidationMessageFor(d => d.comment) 
        </p> 

        <input type="submit" name="submit" value="Add my Comment!"/> 
       } 

TextAreaFor

Hier ist mein Controller für AddComment

[HttpPost] 
     [Route("addComment")] 
     public IActionResult AddComment(Messages model) 
     { 
      var user_id = HttpContext.Session.GetString("Id"); 
      if(user_id == null){ 
       return RedirectToAction("Index"); 
      } 
      model.Users_id = Convert.ToInt32(user_id.ToString()); 
      userFactory.addComment(model, user_id); 
      setTempData(); 

      ViewBag.Messages = userFactory.FindAll(); 
      model.comment =""; 
      return View("Login", model); 
     } 

Die Anrufe für Userfactory Arbeit, es ist ein Aufruf zu meiner Fabrik, die zu meinem db spricht

+0

Nur mit JavaScript habe ich Angst: 'document.getElementById (" formId "). AddEventListener (" abschicken ", function() {this.innerText =" ";})', so ähnlich. – DontVoteMeDown

+0

Was tun Sie nach dem Absenden? Handle die Antwort in einer Controller-Aktion? Was versuchst du zu erreichen? –

+0

Sie sollten Ihren Beitrag ein wenig mit mehr Details oder mehr Code erweitern. Ich schätze, Ihre gesamte Bewerbung ist mehr als nur ein Schnipsel. –

Antwort

-1

Es scheint, dass Ihre Post-Methode 'AddComment' in diesem Fall diese Ansicht wieder zurückgibt. In diesem Fall können Sie eine neue Referenz Ihres Modells senden, um die alten Daten zurückzusetzen. so ähnlich.

[HttpPost] 
public ActionResult AddComment(YourModel objModel) 
{ 
    // your code 
    return View("path of the view", new YourModel()); // don't send back objModel. It already contains data. 
} 

In diesem Fall werden Ihre alten Daten gelöscht.

Oder wenn Sie ein bestimmtes Feld löschen möchten, dann ändern Sie diese bestimmte Eigenschaft von objModel und senden objModel zu Ihrer Ansicht.

+0

Falsch. Die Werte wurden bereits 'ModelState' vom' DefaultModelBinder' hinzugefügt. –

+0

Die Frage wird nach meiner Antwort aktualisiert. Zu dieser Zeit wurde nur der cshtml angegeben. Während ich jetzt überprüfe, wird die Aktionsmethode hinzugefügt. Aber verpassen Sie nie eine Chance auf down voting..carry on @ StephenMuecke – Anadi

+0

OPs Bearbeitung macht keinen Unterschied zu der Tatsache, dass Ihre Antwort falsch ist (daher die Down-Abstimmung) –

0

Nachdem die ganze Arbeit erledigt ist, sollten Sie nicht return View(...), aber eher den Benutzer dazu mit RedirectToAction umleiten. Auf diese Weise löschen Sie alle Formularfelder und verwenden die Post-redirect-get pattern, die Ihre Benutzer daran hindert, doppelt einzureichen.

Das gleiche Muster sollte fast immer angewendet werden, wenn Sie eine ganze Seite buchen.

Verwandte Themen