C# razor,如何使用html按钮来运行方法?

1 c# razor .net-core asp.net-core

我想使用按钮来运行ac#方法该怎么做?现在如果我制作一个按钮

<button type="button" onclick="@class.method()" >execute method</button>
Run Code Online (Sandbox Code Playgroud)

它只是在页面加载时执行该方法,但在单击按钮时不会执行该方法。

Laz*_*iya 5

这可以使用标准表单或ajax 表单来完成。

选项 1 - 标准形式:

为按钮添加asp-page-handler属性并指定相关方法名称,并在后端创建带有 OnPost 前缀的相关方法。

<form method="post">
    <button type="button" asp-page-handler="RunMethod">execute method</button>
</form>
Run Code Online (Sandbox Code Playgroud)

后端方法:

<form method="post">
    <button type="button" asp-page-handler="RunMethod">execute method</button>
</form>
Run Code Online (Sandbox Code Playgroud)

选项 2 - ajax 形式:

直接在表单属性中使用data-ajax-url="?handler=RunMethod",或者您可以使用脚本将相关方法处理程序分配给表单,通过这种方法,您可以在同一 ajax 表单中使用多个按钮:

<form method="post" id="myForm"
        data-ajax="true"
        data-ajax-method="post"
        data-ajax-loading="#loading"
        data-ajax-failure="failed"
        data-ajax-update="#updateMsg">
    <button type="submit" id="RunMethod">execute method</button>
</form>

@section Scripts{
    <partial name="_ValidationScriptsPartial" />

    <script src="~/lib/jquery-ajax-unobtrusive/dist/jquery.unobtrusive-ajax.min.js"></script>
    <script>
        failed = function (xhr) {
            alert('Status: {xhr.status}, Status text: {xhr.statusText}');
        }

        $("#RunMethod").on("click", function () {
            $("#myForm").attr("data-ajax-url", "?handler=RunMethod");
        });
    });
</script>
}
Run Code Online (Sandbox Code Playgroud)

后端方法:

public IActionResult OnPostRunMethod()
{
    //do whatever...
}
Run Code Online (Sandbox Code Playgroud)

请参阅此处的示例