4 Stimmen

Mvc3 wie lösche ich die übermittelten Formularwerte

Ich bin neu bei asp .net mvc3. Ich versuche, einen ziemlich einfachen Abschnitt für Blog-Kommentare zu erstellen.

Ich habe ein CommentsViewModel

public class CommentsViewModel
{
    public CommentModel NewComment { get; set; }
    public IList CommentsList { get; set; }
}

Die entsprechende Ansicht sieht so aus:

@Html.Partial("CommentsList", Model.CommentsList)

@using (Ajax.BeginForm("Create",
                   "Comment",
                   new { id = Model.NewComment.detailsId, comment = Model.NewComment },
                   new AjaxOptions { UpdateTargetId = "CommentsArea" ,
                                     HttpMethod = "Post",
                                     InsertionMode = InsertionMode.Replace}))
{
Kommentar hinzufügen

    @Html.EditorFor(model => Model.NewComment.Body)

}

Jetzt, wenn der Benutzer auf die Schaltfläche "Post" klickt, möchte ich, dass der "CommentsArea" mit der neuen Kommentarliste aktualisiert wird und auch die Formularwerte mit leerem Text gelöscht werden.

Hier ist die Post-Methode:

[HttpPost]
    public ActionResult Create(int id, CommentModel newcomment)
    {
        var newsItem = m_db.NewsList.Single(news => news.Id == id);
        if (!string.IsNullOrWhiteSpace(newcomment.Body))
        {
                newcomment.detailsId = id;
                newsItem.Comments.Add(newcomment);
                m_db.SaveChanges();
        }

        return PartialView("CommentsList", newsItem.Comments);
    }

Jetzt, wenn der Benutzer auf die Schaltfläche "Post" klickt, wird die Liste ordnungsgemäß aktualisiert, aber die Formularwerte werden nicht gelöscht. d.h. Wenn ich einen Kommentar "Neue Kommentare" veröffentlicht habe, wird die Kommentarliste mit "Neue Kommentare" aktualisiert, aber dieser Text bleibt im Bearbeitungsfeld des Formulars erhalten.

Wie kann ich diesen Text löschen?

0voto

Yorgo Punkte 2648

Rufen Sie einfach eine JavaScript-Funktion beim Erfolg des Formulars ab.

@using (Ajax.BeginForm("Create",
                   "Comment",
                   new { id = Model.NewComment.detailsId, comment = Model.NewComment },
                   new AjaxOptions { OnSuccess="ClearInput", HttpMethod = "Post",}))

rufe die create-Ansicht mit der JavaScript-Funktion erneut auf

function ClearInput(){
      //Rufe Aktion zum erneuten Aufrufen der create-Ansicht auf
      $.ajax({})
}

1 Stimmen

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X