【发布时间】:2018-03-05 11:37:42
【问题描述】:
我想调用我的控制器“Project”的方法“EditProject”,参数是项目的 ID。
我见过很多人使用 Ajax,但问题是我想调用控制器,而控制器又会将用户重定向到视图“EditProject”,我不想停留在同一页面上
这是我在发现它不起作用之前尝试过的代码:
$('.edit-project').click(function (d) {
var id = $(this).attr('data-projectId');
$.ajax({
url: '@Url.Action("EditProject", "Project")',
data: { id: id },
type: "GET"
}).done(function() {
console.log("Done");
});
return false;
});
我也尝试过简单地使用
$.get("/Project/EditProject/" +id);
window.location.href = '@Url.Action("EditProject", "Project")' + '/' + id;
window.location.href = ("/Project/EditProject/" +id);
但它会返回 404 错误。
调用的方法很简单:
[HttpGet]
[Authorize(Roles = "Professional")]
public async Task<IActionResult> EditProject(int id)
{
Project p = await _unitOfWork.Projects.GetById(id);
ViewData["Title"] = "Modification du challenge " + p.ProjectName;
return View(p);
}
正如 Ajax 所期望的那样,它确实返回了视图,但它作为对 ajax 查询的响应返回它,因此它不会按照我的意愿重定向和显示视图。
【问题讨论】:
-
这是错字吗
$.get("/Project/EditProject/ +id");你的意思是$.get("/Project/EditProject/" +id); -
在我看来它只需要
window.location.href = "/Project/EditProject/" + id; -
是的,这是一个错字,我也尝试过 window.location.href,但它实际上从未从控制器调用该方法。我试过放一个断点,它永远不会停止。
标签: javascript controller asp.net-core-mvc