Использование $ .ajax или $ .post для вызова метода контроллера MVC 5
Я пытаюсь настроить то, что должно быть очень простым вызовом со страницы MVC к контроллеру с использованием JavaScript. Это мой контроллер:
Imports System.Web.Mvc
Namespace Controllers
Public Class DataController
Inherits Controller
Function Index() As ActionResult
Return View()
End Function
<HttpPost>
Function SaveData(payload As String) As String
If payload IsNot Nothing AndAlso payload.Length > 0 Then
Return "Good"
Else
Return "Bad"
End If
End Function
End Class
End Namespace
это мой вид (Index.vbhtml):
@Code
ViewData("Title") = "Index"
End Code
<h2>Index</h2>
@Code
Html.BeginForm()
@:<a href="#" onclick="SaveData();">Save Data</a>
Html.EndForm()
End Code
и это мой JavaScript (включен через файл _layout.vbhtml):
function SaveData() {
var payload = "TEST_DATA_GOES_HERE";
// Calls controller correctly but data is null
$.ajax({
url: "/Data/SaveData",
type: "POST",
processData: false,
dataType: String,
data: { payload: payload }
})
.done(function () { alert('Application saved.'); })
.fail(function () { alert('Application failed to save.'); });
// Returns a 500 error
$.post("/Data/SaveData", { Payload: payload }, function (data) { alert('Application saved. ' + data); }, "String");
// Calls controller correctly but data is null
$.post("/Data/SaveData", payload, function () { alert('Application saved.' + data); }, "String");
}
Все хорошо подключается при отладке, кромеpayload
переменная прибывает какNothing
вSaveData
функция. Я пытался использовать$.post
но со схожими проблемами и всеми ссылками, которые я нашел на использование любого метода, просто предполагают, что он будет работать впервые без ошибок и не будет никаких советов по устранению неполадок.
Как вы настраиваете$.ajax
или же$.post
функции для правильного вызова контроллера и передачи простой строки?