锚 link 不重定向到控制器方法

Anchor link not directing to controller method

我在 <table> 的单元格中有一个锚点 <a> 元素,导致我的应用程序中的一个动作。当我在浏览器中单击 link 时,事件应用程序会转到我期望的路线 (Admin/ManageCustomers/ViewPayments/1),但不会调用该操作(我在预期的方法,但它没有被击中)。我已经对控制器和动作的名称进行了两次和三次检查,并将其与我应用程序中的其他地方进行了比较,其中 <table> 中的 <a> 个元素 do 工作,我不明白为什么这个行为不同。

如果这很重要,视图和控制器都在“管理”区域内,但我认为这仍然有效(我知道锚点的 asp-area 标签可能不是必要的,因为视图和模型都在同一个区域,但我只是在尝试我当时能想到的一切)。

控制器:

namespace Shop.Areas.Admin.Controllers
{
  [Authorize(Roles =Constants.ROLE_ADMIN)]
  [Area(Constants.ROLE_ADMIN)]
  public class ManageCustomers : Controller
  {
   
    ...
    // other stuff
    ...

    [HttpPost]
    public IActionResult ViewPayments(int id) // This is the method I want to call
    {
      ....
    }
  }
}

查看:

...
@* stuff *@
...

<div class="container-fluid">
  <main>
      <table class="table table-bordered table">
        <tr>
          <th>Name</th>
          <th>Balance</th>
          <th></th>
          <th></th>
          <th></th>
        </tr>
        @foreach (Customer customer in Model)
        {          
          ...            
          @* stuff *@
          ...
          <tr>
            <td>
              @* This is the element that isn't working right *@
              <a asp-area="Admin" 
                  asp-controller="ManageCustomers" 
                  asp-action="ViewPayments" 
                  asp-route-id="@customer.CustomerId"  @*From the model*@
                  class="text-center">
                View Payment History
              </a>
            </td>
            ...
            @* stuff *@
            ...
          </tr>
        }
      </table>
  </main>
</div>

锚点和它导致的url是GET个请求。您在 Controller 中向我们展示的方法需要 POST。您需要更改方法以接受 GET 或创建 GET 方法。