C# asp net core razor页面中具有多个提交按钮的多个提交操作

C# asp net core razor页面中具有多个提交按钮的多个提交操作,c#,asp.net-core,form-submit,submit-button,C#,Asp.net Core,Form Submit,Submit Button,我有一个带有表单和多个提交按钮的razor页面。对于每个按钮,我想在我的codebehind文件中启动一个不同的Post操作。这是我的cshtml页面: <form class="form" method="post" > <input type="submit" value="Test1" formaction="Button1" /> <input

我有一个带有表单和多个提交按钮的razor页面。对于每个按钮,我想在我的codebehind文件中启动一个不同的Post操作。这是我的cshtml页面:

<form class="form" method="post" >
    <input type="submit" value="Test1" formaction="Button1" />
    <input type="submit" value="Test2" formaction="Button2" />
</form>
<form class="form" method="post">
    <input type="submit" value="Test1" asp-page-handler="Button1"/>
    <input type="submit" value="Test2"  asp-page-handler="Button2"/>
</form>
不幸的是,这是行不通的。当我提交时,我收到一个404错误:

找不到此本地主机页找不到该网址的网页:https://localhost:44366/Mutations/Button1 HTTP错误404

正确的URL应为:https://localhost:44366/Mutations/Test


我做错了什么?

您必须为这两个操作分配不同的路线(与您的
动作相匹配):

[HttpPost("button1")]
public IActionResult Button1(IFormCollection data)
{
//my code
}

[HttpPost("button2")]
public IActionResult Button2(IFormCollection data)
{
//my code
}

由于您是
Razor
中的项目,
Razor
中的路由规则不同于
MVC
项目,因此您可以按如下方式更改代码:

您的cshtml.cs文件:

[HttpPost]
public IActionResult Button1(IFormCollection data)
{
//my code
}

[HttpPost]
public IActionResult Button2(IFormCollection data)
{
//my code
}
 public IActionResult OnPostButton1(IFormCollection data)
    {
        //...
    }

   
    public IActionResult OnPostButton2(IFormCollection data)
    {
        //...
    }
您的cshtml页面:

<form class="form" method="post" >
    <input type="submit" value="Test1" formaction="Button1" />
    <input type="submit" value="Test2" formaction="Button2" />
</form>
<form class="form" method="post">
    <input type="submit" value="Test1" asp-page-handler="Button1"/>
    <input type="submit" value="Test2"  asp-page-handler="Button2"/>
</form>

结果: