【发布时间】:2011-09-26 17:41:42
【问题描述】:
我有一个定义了以下 Ajax.ActionLink 的视图
@Ajax.ActionLink(@Model.Game.VisitorTeam.FullName, "SelectTeam", new { gameID = @Model.Game.GameID, pickID = @Model.Game.VisitorTeam.TeamID }, new AjaxOptions { HttpMethod = "POST", OnSuccess = "pickMade" }, new { id = "vpick-" + @Model.Game.GameID });
这是我的控制器中定义的动作。
public JsonResult SelectTeam(int gameID, int pickID) {
var user = Membership.GetUser(User.Identity.Name);
var message = "Pick Submitted";
var userID = (Guid) user.ProviderUserKey;
_pickService.SubmitPick(userID, gameID, pickID);
return Json(new {id = gameID, teamID = pickID, message}, JsonRequestBehavior.AllowGet);
}
当我点击页面上的链接时,它会在我的控制器中很好地回发到我的 Action,执行代码并返回 Json 结果。但是,一旦客户端得到结果,浏览器就会打开一个“另存为”对话框。如果我保存文件,这是我的 Json 结果,按预期返回。我不知道为什么没有调用我的“pickMade”函数来处理回发的结果。
在我的其他应用程序中,我正在使用 [AcceptVerbs(HttpVerbs.Post)] 属性。但是,如果我在此应用程序中尝试此操作,则在从我的视图中调用操作时会收到 404 错误。如果我删除该属性,我必须将 JsonRequestBehavior.AllowGet 添加到我的返回值中。
我在另一个应用程序中具有非常相似的功能,并且运行良好。我不确定发生了什么事,因此感谢您的帮助。
【问题讨论】:
标签: json asp.net-mvc-3