2016-09-16 4 views
1

Ich arbeite mit ASP.Net MVC 5 und C#. Ich erzeuge Ansichten und Controller aus meiner Modellstruktur mit VS2015 Scaffolding-Funktion. Die Controller und Ansichten geben meiner Anwendung einige grundlegende Funktionen zum Bearbeiten, Erstellen und Löschen von Datensätzen. Alle Formularansichten enthält diese Erklärung:Was ist falsch mit ajax.beginform

@using (Html.BeginForm()) 

Ich habe versucht, diese Erklärung zu ersetzen durch:

@using (Ajax.BeginForm("Edit", new AjaxOptions())) 

Ich habe etwas verändert in Aktion bearbeiten Methode. Wie Sie sehen können, ich kommentiert, um einige Code nicht zu umleiten (und eine Fehlermeldung beispielsweise angezeigt werden)

[HttpPost] 
    [ValidateAntiForgeryToken] 
    public ActionResult Edit([Bind(Include = "....")] MyDataObject obj) 
    { 
    /* if (ModelState.IsValid) 
     { 
      ... 
      db.SaveChanges(); 
      return RedirectToAction("Index"); 
     }*/ 
     return View(obj); 
    } 

Natürlich, ich habe umfassen Microsoft JQuery Unauffällig Ajax NuGet Pacakges und die 2 JS-Skripte Einbeziehung in die Kopf. A haben auch diese Zeile in web.config hinzufügen:

<add key="UnobtrusiveJavaScriptEnabled" value="true"/> 

ich keine JS Fehler haben, aber die ganze Seite aktualisiert wird. Ich kann es sehen Beaucse ich diese Art von Tags auf meiner Seite hinzufügen (auf der _Layout und in der Form)

@DateTime.Now.ToLongTimeString() 

Was ist falsch?

Dank

+0

Ich denke, Ihre Ajax-Optionen fehlen, deshalb erhalten Sie den Fehler –

+0

Ich möchte nur das Formular neu laden ohne die ganze Seite. Sie brauchen in diesem Fall keine Optionen? – Bob5421

+0

Wenn Sie Ihre Seite neu laden möchten, dann warum verwenden Sie Ajax Formular –

Antwort

0

Wenn Sie nur das Formular neu geladen werden soll, dann müssen Sie Ajaxoptions wie unten definiert:

@using (Ajax.BeginForm(new AjaxOptions 
{ 
    HttpMethod = "POST", 
    Url = "api/Person", 
    OnComplete = "personSavedComplete" // Your function name define your form refresh logic into this 
})) 

und stellen Sie sicher, unten Skript zu verwenden:

<script src="~/Scripts/jquery.unobtrusive-ajax.min.js" type="text/javascript"> </script> 
+0

Okay, es gibt keine Möglichkeit, dies automatisch zu tun? Ich muss mit einer Web-API arbeiten und eine Teilansicht für das Formular schreiben, wenn ich das verstehe? – Bob5421

+0

Ich denke, dies ist der effiziente Weg, um Ihre Anforderung zu erfüllen. Wenn Sie definieren, was Ihr Zweck hinter dem Formular aktualisieren. Ich kann Ihnen mehr vorschlagen ... Danke –

+0

Der Zweck ist: Der Benutzer sollte einen Fehler machen, wenn er die Formulare ausfüllt. Außerhalb des Formulars habe ich andere Steuerelemente, die ich nicht aktualisieren möchte (ein Video, das zum Beispiel spielt). – Bob5421