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

R. *_*ing 7 c# form-submit submit-button asp.net-core

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

\n
<form class="form" method="post" >\n    <input type="submit" value="Test1" formaction="Button1" />\n    <input type="submit" value="Test2" formaction="Button2" />\n</form>\n
Run Code Online (Sandbox Code Playgroud)\n

这在我的 cshtml.cs 文件中:

\n
[HttpPost]\npublic IActionResult Button1(IFormCollection data)\n{\n//my code\n}\n\n[HttpPost]\npublic IActionResult Button2(IFormCollection data)\n{\n//my code\n}\n
Run Code Online (Sandbox Code Playgroud)\n

不幸的是,这不起作用。当我提交时出现 404 错误:

\n

无法找到此 localhost 页面\xe2\x80\x99 找不到该网址的网页:https://localhost:44366/Mutations/Button1\nHTTP ERROR 404

\n

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

\n

我究竟做错了什么?

\n

Yin*_*qiu 10

因为你是 中的项目Razor,所以 中的路由规则Razor与项目不同MVC,你可以更改你的代码如下:

您的 cshtml.cs 文件:

 public IActionResult OnPostButton1(IFormCollection data)
    {
        //...
    }

   
    public IActionResult OnPostButton2(IFormCollection data)
    {
        //...
    }
Run Code Online (Sandbox Code Playgroud)

你的cshtml页面:

<form class="form" method="post">
    <input type="submit" value="Test1" asp-page-handler="Button1"/>
    <input type="submit" value="Test2"  asp-page-handler="Button2"/>
</form>
Run Code Online (Sandbox Code Playgroud)

结果: 在此输入图像描述


Gus*_*man 4

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

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

[HttpPost("button2")]
public IActionResult Button2(IFormCollection data)
{
//my code
}
Run Code Online (Sandbox Code Playgroud)