繁体   English   中英

如何在 asp.net razor 页面中使用锚标记作为提交按钮

[英]How to use anchor tag as submit button in asp.net razor pages

我在剃须刀页面中有一个名为OnGetExpense(UsePayload payload)的处理程序方法

page.cshtml:

<input type="hidden" asp-for="Filters.From" value="@Model.Filters.From.ToYYYYMMDD()" />
<input type="hidden" asp-for="Filters.To" value="@Model.Filters.To.ToYYYYMMDD()" />
<a asp-page-handler="Expense" class="btn btn-primary" type="button" style="border-color: inherit">
Expense
</a>

page.cshtml.cs:

public IActionResult OnGetExpense(UserPayload filter)
{
    Console.WriteLine(filter.From);
    Console.WriteLine(filter.To);
    return Page();
}

我得到的From date 和 to date 是01-01-0001它没有提交我需要的有效负载。

是否有任何标签属性可以发送带有锚标签的有效负载?

请帮忙

您呈现的 A 标签将创建一个到端点的 GET 请求,您需要一个 POST 以发送请求正文中的数据,并且控制器将请求正文绑定到您的 UserPayload 对象。

要发送 POST 请求,您可以编写一些 JavaScript 和 POST 到 JSON 到端点,或者将代码包装在表单中。

https://docs.microsoft.com/en-us/aspnet/web-pages/overview/ui-layouts-and-themes/4-working-with-forms

您的控制器需要分配HttpPost属性。

[HttpPost]
public IActionResult OnGetExpense(UserPayload filter)
{
    Console.WriteLine(filter.From);
    Console.WriteLine(filter.To);
    return Page();
}

是否有任何标签属性可以发送带有锚标签的有效负载?

您可以使用asp-route-{value}

下面是一个工作demo,大家可以参考一下。

cshtml:

 <a  asp-page-handler="Expense" asp-route-attendeeid="12" class="btn btn-primary" type="button" style="border-color: inherit">Expense</a>

cshtml.cs

 public IActionResult OnGetExpense(int attendeeId)
        {
            return Page();
        }

结果:

在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM