Так что у меня было немного времени, пытаясь выяснить, как вернуть данные из вызова AJAX. Я передавал объект JSON из представления в контроллер, а затем возвращал идентификатор объекта, когда это было сделано.
Итак, я наконец заработал, и вот что я сделал на виде:
var obj = {
property1 : '',
property2 : ''
};
$.ajax({
// Returns the full url
url: '@Url.Action("Method", "Controller")',
// Sends as a json object, I actually have an object that maps to my ViewModel, this is just for explaining
data: obj,
// You are telling that you are receiving a json object
dataType: 'json',
success: function (id) {
// do code here with id
}
})
Для моего контроллера я возвратил объект Json и сделал AllowGet как JsonRequestBehavior
public ActionResult Method (ViewModel vm)
{
int id = ... (do something with the vm)
return Json(id, JsonRequestBehavior.AllowGet);
}
Edit:
Кроме того, кажется, что у вас есть POST как тип запроса к контроллеру, а ваш метод контроллера не имеет аннотации [HttpPost]
. Это также может иметь место.
Надеюсь, это поможет!
Ура!