c#-.Net Core 直接从 HTML 调用 OnPost
回发调用方法“OnPostSetPage”并传递参数的最佳方法是什么。"onclick="setPage('1')" 对我不起作用。我尝试创建查询代码会拦截 onclick 事件并完成回发到 OnPostSetPage。但是,当成功这样做时,它实例化了一个新类,我丢失了我希望使用的模型的上下文。我需要调用 OnPostSetPage,传入一个参数并访问“公共类 IndexModel”之外的现有模型属性。使用 MVC,我可能会使用“@Html.ActionLink”或“asp -controller & asp-action”,但这不是 MVC 应用程序。这是 Index.cshtml 和 Index.cshtml.cs 与 OnGet、OnPost 等方法的命名约定的组合(这对我来说是全新的)。
<div class="row mt-3">
<div class="col">
<ul class="pagination justify-content-center">
<li class="page-item @(Model.pager.currentPage == 1 ? "disabled" : null)">
<a class="page-link cursor-pointer" onclick="setPage('1')">First</a>
</li>
<li class="page-item @(Model.pager.currentPage == 1 ? "disabled" : null)">
<a class="page-link cursor-pointer" onclick="setPage('@(Model.pager.currentPage - 1)')">Previous</a>
</li>
@for (int i = 1; i <= Model.pager.totalPages; i++)
{
if (i > 5) break;
isDisabled = (i == @Model.pager.currentPage) ? true : false;
<li class="page-item @(Model.pager.currentPage == @i ? "active" : null)">
<a class="page-link cursor-pointer" onclick="setPage('@i')">@i</a>
</li>
}
<li class="page-item @(Model.pager.currentPage == @Model.pager.totalPages ? "disabled" : null)">
<a class="page-link cursor-pointer" onclick="setPage('@(Model.pager.currentPage + 1)');">Next</a>
</li>
<li class="page-item @(Model.pager.currentPage == @Model.pager.totalPages ? "disabled" : null)">
<a class="page-link cursor-pointer" onclick="setPage('@Model.pager.totalPages');">Last</a>
</li>
</ul>
</div>
</div>
public IActionResult OnPostSetPage(int page = 1)
{
// Do Stuff here
return RedirectToPage("Index");
}
更新 我可以得到一个回发处理程序来为一个按钮工作,只是还不是一个href。注意:必须将参数 page 更改为 pageNum 才能解决保留字问题。
<form method="post">
<p>Testing Buttons</p>
<button type="submit" class="btn btn-success btn-sm show-report-spinner" asp-page-handler="SetPage" asp-route-pageNum="1">SetPage #1</button>
</form>