2012-04-05 11 views
4

Ich bin neu in ASP. NET mvc3. Ich versuche, einen einfachen Blog-Kommentarabschnitt zu erstellen.mvc3 Wie lösche ich die übermittelten Formularwerte

Ich habe eine CommentsViewModel

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

Die entsprechende Ansicht ist wie

<div id="CommentsArea"> 
@Html.Partial("CommentsList", Model.CommentsList) 
</div> 
@using (Ajax.BeginForm("Create", 
        "Comment", 
        new { id = Model.NewComment.detailsId, comment = Model.NewComment }, 
        new AjaxOptions { UpdateTargetId = "CommentsArea" , 
            HttpMethod = "Post", 
            InsertionMode = InsertionMode.Replace})) 
{ 
<div class="display-label">Add Comment</div> 
<div class="display-field"> 
    @Html.EditorFor(model => Model.NewComment.Body) 
</div> 
<input type="submit" value="Post" /> 
} 

Nun, wenn der Benutzer Taste Beitrag betritt ich den „CommentsArea“ will mit der neuen Kommentarliste aktualisiert werden und auch die Formularwerte, die mit leerem Text gelöscht werden sollen.

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 Beitrag Schaltfläche klickt die Liste ordnungsgemäß aktualisiert wird, aber die Form Werte werden nicht gelöscht. Wenn ich beispielsweise einen Kommentar "Neue Kommentare" gepostet habe, wird die Kommentarliste mit "Neue Kommentare" aktualisiert, aber dieser Text verbleibt im Bearbeitungsfeld des Formulars.

Wie lösche ich diesen Text?

Antwort

0

rufen Sie einfach eine js-Funktion auf den Erfolg von Formular senden.

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

auf js Funktion wieder Ansicht machen erstellen

function ClearInput(){ 
     //call action for render create view 
     $.ajax({}) 
} 
+1

Link erklärt auch: http://www.gbogea.com/2008/11/26/ajax-beginform-clear-form-after -einreichen – user1314939