Я пытаюсь использовать .Net Ajax.BeginForm, чтобы отправить форму и получить список объектов.
@using (Ajax.BeginForm("ValidateEmployee", new AjaxOptions { OnBegin = "onBegin", OnSuccess = "onSucess", UpdateTargetId = "results"} )
Проблема в том, что, когда мой контроллер возвращает JsonResult, и я преобразовываю свой возвращенный список в json, обратный вызов OnSuccess никогда не вызывается, и мой div с идентификатором «results» не обновляется. Но обратный вызов onBegin называется. Контроллер выглядит следующим образом.
public JsonResult ValidateEmployee(Employee emp)
{
...
List<Role> roles = new Role();
foreach(var x in myCollection)
{
roles.Add(new Role { ID = x.ID, Name = x.Name });
}
return Json(roles);
}
Я подтвердил, что Json(roles)
правильно преобразовывает список в действительный json. Но я не могу его использовать, потому что onSuccess никогда не запускается.
Странно, если я не преобразую список в json и просто верну его в виде списка .Net, будут вызваны оба обратных вызова и мой элемент для обновления выходных данных System.Collections.Generic.List'1 [Models.Role]. Так что это не JSON, и у меня нет возможности использовать данные.
Так почему onSuccess не вызывается, когда я возвращаю объект json из моего контроллера?
Я использую MVC 3 и ссылаюсь на jquery.unobtrusive-ajax.js.
Спасибо за любую помощь.