У меня есть представление со следующим определенным 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 к своему возвращаемому значению.
У меня очень похожая функциональность в другом приложении, и она отлично работает.Я не уверен, что происходит, поэтому любая помощь приветствуется.