HTTP 错误 405 | ASP.NET 核心 3.1 MVC |斜线问题

HTTP ERROR 405 | ASP.NET Core 3.1 MVC | slash problem

我需要一些帮助。

我正在使用 ASP.NET Core 3.1 MVC,一切正常,但不是特定操作。

我有几个页面:开始 -> 索引 -> 添加用户。

感谢 <button>s,我在页面之间导航。

Index.cshtml :

<form asp-controller="Home" asp-action="AddUser" asp-route-GB="@ViewBag.GB">
      <button type="submit" class="btn btn-success">Add</button>
</form>

HomeController.cs :

[HttpGet]
public ActionResult Start(string GB) {
  if (string.IsNullOrEmpty(GB)) {
    return RedirectPermanent("Error");
  }
  else {
    return View();
  }
}
[HttpGet]
public ActionResult Index(string GB) {
  if (string.IsNullOrEmpty(GB)) {
    return RedirectPermanent("Error");
  }
  else {
    return View();
  }
}
[HttpGet]
public ActionResult AddUser(string GB) {
  if (string.IsNullOrEmpty(GB)) {
    return RedirectPermanent("Error");
  }
  else {
    return View();
  }
}
public ActionResult Error() {
  return View();
}

URL 结果:

https://localhost:XXXXX/Home/Start?GB=1 -> 进展顺利。

https://localhost:XXXXX/Home/Index?GB=1 -> 进展顺利。

https://localhost:XXXXX/Home/AddUser?GB=1 -> HTTP 错误 405

但是!如果我在最后一个中添加斜杠: https://localhost:XXXXX/Home/AddUser/?GB=1 -> 进展顺利。

这是怎么回事?我不想在我的浏览器上添加斜线来让它工作...

首先要添加或创建 api,它必须是 POST 类型而不是 GET。 尝试使用 [HttpPost] 属性。它可能会解决您的问题。

好的,基本上我明白了

  • <a>支持[HttpGet]
  • <button> + <form> 支持 [HttpPost]

如果您想使用 [HttpGet] 那么:

<a class="btn btn-success" asp-controller="Home" asp-action="AddUser" asp-route-GB="@ViewBag.GB">
    Next Step
</a>

如果您想使用 [HttpPost] 那么:

<form asp-controller="Home" asp-action="AddUser" asp-route-GB="@ViewBag.GB">
    <button type="submit" class="btn btn-success">Next Step</button>
</form>