在浏览器的地址栏中,我有以下输入:
http://localhost:55105/Tasks/UpdateStatus/8/1
但是,我在调试时没有按下我的控制器方法。
[Route("Tasks/UpdateStatus/{id}/{status}")]
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult UpdateStatus(int id, int status)
{
Task task = db.Tasks.Find(id);
if (ModelState.IsValid)
{
task.Status = status;
db.Entry(task).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
}
return View(task);
}
获取以下错误:
>'/'应用程序中的服务器错误。无法找到资源。
答案 0 :(得分:1)
您的操作方法需要将参数作为 POST 传递,并且通过您在浏览器中的方式 url 来获取请求,因为参数是网址的一部分作为查询字符串。您需要的是视图中的表单,并通过表单发布值。
确保您以发布方式为您请求发送数据。
为了便于理解,您可以尝试将[HttpPost]
重命名为[HttpGet]
并查看它是否有效,但是当您更新数据库中的数据时,这不是上述用例的方法所以你应该使用 POST 而不是 GET