ASP Net Core剃须刀页面中具有多个提交按钮的多个提交动作

问题描述

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

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

,并且在我的cshtml.cs文件中:

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

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

不幸的是,这不起作用。提交时收到404错误

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

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

我在做什么错了?

解决方法

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

formaction
,

由于您是Razor中的一个项目,所以Razor中的路由规则与MVC项目不同,因此可以如下更改代码:

您的cshtml.cs文件:

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

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

您的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>

结果: enter image description here

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...