Próbuję użyć pomocnika ASP.NET MVC Ajax.BeginForm, ale nie chcę używać istniejących opcji wstawiania treści po zakończeniu połączenia. Zamiast tego chcę użyć niestandardowej funkcji JavaScript jako wywołania zwrotnego.Jak używać pomocnika Ajax.BeginForm MVC z wynikiem JSON?
To działa, ale wynik, który chcę, powinien zostać zwrócony jako JSON. Niestety, framework traktuje dane jako ciąg. Poniżej znajduje się kod klienta. Kod serwera po prostu zwraca JsonResult z jednym polem, UppercaseName.
<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" />
<%} %>
Zamiast pokazywać wynik wielkiej litery, zamiast tego pokazuje niezdefiniowany. content.get_data() wydaje się przechowywać JSON, ale tylko w formie ciągu. Jak mam zamiar przekonwertować to na obiekt?
Wszystko to wydaje się nieco skomplikowane. Czy istnieje lepszy sposób na uzyskanie wynikowej zawartości przy użyciu Ajax.BeginForm? Jeśli jest to trudne, mogę całkowicie pominąć Ajax.BeginForm i po prostu użyć biblioteki formularzy jQuery.
można wyświetlić kod do działania kontrolera? – tvanfosson
Działanie kontrolera nie jest problemem. Dosłownie jest to jedna linia: return Json (new {UppercaseName = name.ToUpper()}); –