2009-04-01 7 views
1

Ich habe eine Seite, die mehrere Eingaben enthält - ich benutze Ajax.BeginForm, um ein Formular für jeden Satz von Eingaben zu erstellen.ASP.NET MVC Buchung mit Ajax.BeginForm gibt leere Ansicht

<% using (Ajax.BeginForm(new AjaxOptions() { InsertionMode = InsertionMode.InsertAfter, HttpMethod = "POST" })) 
    { %> 
    <input class="smallInput" type="text" name="duration"/> 
    <input type="submit" value="Add" /> 
<% } %> 

Der Controller sieht wie folgt aus

[AcceptVerbs("POST")] 
    public ActionResult AddExercise(FormCollection form) 
    { 

     // some save logic... 

     return Content(string.Empty); 

    } 

Dies funktioniert - die Daten werden an mein Controller übermittelt und gespeichert wird.

Jedes Mal, wenn dies passiert, wird meine Seite durch eine leere Seite ersetzt. Wenn ich explizit eine Ansicht aus meiner Aktion zurückgebe, wird stattdessen diese Ansicht angezeigt. Aber ich möchte, dass es das Formular einreicht und meine bestehende Seite unverändert belässt.

Antwort

5

Ich war nicht mit der MVC Ajax JavaScript-Dateien in meiner Seite. Das Hinzufügen dieser enthält das Problem behoben.

+0

Wenn Sie Dateien sagen, welche Dateien sind sie? Ich sehe nur http://ajax.aspnetcdn.com/ajax/mvc/2.0/MicrosoftMvcAjax.js auf ihrer Website für MVC 2 und wenn ich es verwende, erhalte ich eine Fehlermeldung, dass "Typ" nicht definiert ist. –

+0

Nick - das wurde vor 4 Jahren gepostet. Ich habe keine Ahnung, welche spezifischen Dateien mehr fehlten. – Jason

+0

jquery-ajax-unauffällig -> https://github.com/aspnet/jquery-ajax-unobtrusive/blob/master/src/jquery.unobtrusive-ajax.js –

1

Sie müssen die ID des DOM-Elements angeben, die aktualisiert werden soll:

<% using (Ajax.BeginForm(new AjaxOptions() { 
    UpdateTargetId = "someID", 
    InsertionMode = InsertionMode.InsertAfter, 
    HttpMethod = "POST" })) 
{ %> 
    <input class="smallInput" type="text" name="duration"/> 
    <input type="submit" value="Add" /> 
<% } %> 
Verwandte Themen