【发布时间】:2010-01-18 11:59:19
【问题描述】:
最近似乎我发布的所有内容似乎都是带有 JSON 的 ASP.NET MVC - 你会认为我现在已经学会了!然而,我无法解释的奇怪事情不断发生!
我有一个返回 JsonResult 的 Controller 方法:
public JsonResult GetAllUserTasksForStage(int StageID, string Username)
{
var uM = ManagerProvider.GetUserManager();
var tM = ManagerProvider.GetTaskManager();
var tasks = tM.GetAllUserTasks(StageID, uM.GetUser(Username).ID);
// GetAllUserTasks returns IEnumerable<TaskViewModel>
// Encode this into Json and return it
return Json(tasks, JsonRequestBehavior.AllowGet);
}
此方法成功完成,但是在我的视图上接收此方法时,出现了问题。我尝试同时使用 $.post(...) 和 $.getJSON(...) - 对于 $.post() 我从 Controller 方法中删除了 JsonRequestBehavior 。
阅读 jQuery 文档后,我发现 $.post 和 $.getJSON 上的回调函数只有在结果为有效 JSON 时才会触发——这让我相信 GetAllUserTasksForStage 的返回结果有问题。
TaskViewModel 类定义为:
public class TaskViewModel
{
public int ID { get; set; }
public UserViewModel Assignee { get; set; }
public DateTime Created { get; set; }
public UserViewModel Creator { get; set; }
public DateTime Due { get; set; }
public string TaskDescription { get; set; }
public string TaskTitle { get; set; }
public bool Completed { get; set; }
public StageViewModel Stage { get; set; }
public IEnumerable<TaskAuditViewModel> TaskAudits { get; set; }
}
这完全把我难住了,因为我在同一个视图上多次使用 $.post 和 $.getJSON 都没有问题 - 但从未返回 TaskViewModel。
有什么想法吗?
谢谢,
克里斯
【问题讨论】:
-
“出现问题”?你能说得更具体一点吗?你检查过 Firebug 或 Fiddler 中的 JSON 吗?
-
$.post() 和 $.getJSON 中给出的回调函数没有触发,这意味着返回了无效的 JSON - 但我不知道为什么它是无效的 JSON。
-
您需要指定正在生成的错误类型,以便任何人充分评论问题可能是什么。
-
您是否尝试过关注 firebug 中返回的数据?
-
感谢大家的cmets,我承认这个问题可以更好地表达。主要问题是回调函数没有触发 - 我已经通过不返回 IEnumerable
来证明这一点,而是让我自己的 Json 对象只包含我需要的值 - 这似乎目前有效。现在只是好奇困扰着我!
标签: jquery asp.net-mvc json