Ich versuche, den ASP.NET MVC Ajax.BeginForm-Helper zu verwenden, möchte aber nicht die vorhandenen Optionen zum Einfügen von Inhalten verwenden, wenn der Anruf abgeschlossen ist. Stattdessen möchte ich eine benutzerdefinierte JavaScript-Funktion als Rückruf verwenden.Wie Ajax.BeginForm MVC-Helfer mit JSON-Ergebnis verwenden?
Das funktioniert, aber das gewünschte Ergebnis sollte als JSON zurückgegeben werden. Leider behandelt das Framework die Daten nur als String. Unten ist der Client-Code. Der Servercode gibt einfach ein JsonResult mit einem Feld, GroßbuchstabenName zurück.
<script type='text/javascript'>
function onTestComplete(content) {
var result = content.get_data();
alert(result.UppercaseName);
}
</script>
<% using (Ajax.BeginForm("JsonTest", new AjaxOptions() {OnComplete = "onTestComplete" })) { %>
<%= Html.TextBox("name") %><br />
<input type="submit" />
<%} %>
Anstatt das Ergebnis in Großbuchstaben anzuzeigen, wird stattdessen undefined angezeigt. content.get_data() scheint den JSON zu enthalten, aber nur in String-Form. Wie wandle ich das in ein Objekt um?
All dies scheint ein bisschen verschlungen wirklich. Gibt es einen besseren Weg, um den resultierenden Inhalt mit Ajax.BeginForm zu erhalten? Wenn es so schwer ist, kann ich Ajax.BeginForm komplett überspringen und einfach die jQuery-Formularbibliothek verwenden.
Können Sie den Code für Ihre Controller-Aktion zeigen? – tvanfosson
Die Controller-Aktion ist nicht das Problem. Es ist buchstäblich eine Zeile: return Json (new {UppercaseName = name.ToUpper()}); –