我正在尝试使用 .Net 的 Ajax.BeginForm 提交表单并取回对象列表。
@using (Ajax.BeginForm("ValidateEmployee", new AjaxOptions { OnBegin = "onBegin", OnSuccess = "onSucess", UpdateTargetId = "results"} )
问题是,当我的控制器返回一个 JsonResult 并且我将返回的列表转换为 json 时,永远不会调用 OnSuccess 回调,并且我的 id 为“results”的 div 也不会更新。但是调用了 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,我没有办法使用数据。
那么为什么当我从控制器返回一个 json 对象时没有调用 onSuccess 呢?
我正在使用 MVC 3,并且正在引用 jquery.unobtrusive-ajax.js。
谢谢你的帮助。