锚 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
方法。
我在 <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
方法。