剃刀页面-不使用post运行服务器端方法

时间:2019-07-22 07:16:25

标签: asp.net-core razor-pages asp.net-core-3.0

在Razor页的ASP.NET Core中,如何为按钮类型的按钮执行基本的onclick事件?

我是否需要连接AJAX GET请求才能使下面的“重新发送代码”按钮起作用?关于OnPost这样的话题有很多话题。.但是我不想发布。

能这么难吗?

<form method="post">
    <div asp-validation-summary="All"></div>

    <div class="form-group-item">
        <label asp-for="Input.TwoFactorCode"></label>
        <input asp-for="Input.TwoFactorCode" class="input" />
        <span asp-validation-for="Input.TwoFactorCode"></span>
    </div>

    <div class="form-group-item">
        <label class="margin-0" asp-for="Input.RememberMachine">
            <input asp-for="Input.RememberMachine" />
            @Html.DisplayNameFor(m => m.Input.RememberMachine)
        </label>
    </div>

    <div>
        <button type="button" asp-page-handler="ResendCode" class="btn btn-light">Resend Code</button>
        <button type="submit" class="btn btn-secondary">Confirm</button>
    </div>
</form>

3 个答案:

答案 0 :(得分:1)

按目前的状态,该按钮不会执行任何操作。您可以使用JavaScript拦截按钮单击,然后使用AJAX(下面的jQuery示例)触发get请求:

$('.btn.btn-light').on('click', function(){
    $.get('?handler=ResendCode', data, function(){
        ...
    });
});

答案 1 :(得分:0)

您可以尝试将按钮更改为使用formmethod="get"

<button type="submit" formmethod="get" asp-page-handler="ResendCode" class="btn btn-light">Resend Code</button>

请注意,这仅适用于具有type="submit"type="image"的按钮(其他type值不会导致表单提交)。也是HTML5属性。

参考:

答案 2 :(得分:0)

也许可以尝试制作自己的自定义处理程序方法,而不是OnPost()和OnGet()