【问题标题】:Multiple submit actions with multiple submit buttons in asp net core razor page在 asp net core razor 页面中具有多个提交按钮的多个提交操作
【发布时间】:2020-10-23 11:36:14
【问题描述】:

我有一个带有表单和多个提交按钮的剃须刀页面。对于每个按钮,我想在我的代码隐藏文件中启动不同的 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

我做错了什么?

【问题讨论】:

    标签: c# asp.net-core form-submit submit-button


    【解决方案1】:

    由于你是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>
    

    结果:

    【讨论】:

    • 尽管我根本没有配置会话,但这种方法存在会话异常(因此 ModelState.IsValid == false)。没用。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-27
      • 1970-01-01
      • 2016-08-02
      相关资源
      最近更新 更多