以一种方法获取具有一种形式的多个按钮的值

Posted

技术标签:

【中文标题】以一种方法获取具有一种形式的多个按钮的值【英文标题】:Get the value for multiple button with one form in one method 【发布时间】:2021-03-15 00:46:06 【问题描述】:

我正在使用新的.NET Core Razor Pages。如果我有多个按钮,如何获取每个按钮的值?

在我的剃须刀页面中,我有 2 个按钮:

    <form method="post">
            <button type="submit" value="2020" id="btn1">2020</button>
            <button type="submit" value="2019" id="btn2">2019</button>
    </form>

在我后面的代码中:

    public void OnPost()
    
     // How to get btn1 value (2020) and btn2 value (2019) here?
    

【问题讨论】:

从服务器端,您只能检索用于提交表单的按钮的值。如果您需要传递其他值,我建议将它们放入同一表单中的隐藏变量中。 【参考方案1】:

正如约翰所说,您只能检索用于提交表单的按钮的值。 如果要同时发布两个按钮,将它们放入隐藏变量中是一个不错的方法。

注意事项: asp.net核心模型绑定系统会通过html元素中的名称而不是id来绑定值。

一种方法是手动添加这些输入:

<form method="post">
    <input hidden  value="2020" name="btn1"/>
    <input hidden  value="2019" name="btn2"/>
    <button type="submit" value="2020" id="btn1">2020</button>
    <button type="submit" value="2019" id="btn2">2019</button>
</form>

另一种方式是使用 jquery 自动添加输入:

<form method="post">
    <button type="submit" value="2020" id="btn1">2020</button>
    <button type="submit" value="2019" id="btn2">2019</button>
</form>

@section Scripts

<script>
    $("form").submit(function () 
        $("button[type=submit]").each(function (i) 
            i++;
            var value = $(this).val();
            var input = $("<input>")
                .attr("type", "hidden")
                .attr("name", "btn" + i).val(value);
            $('form').append(input);

        );
        
    );
</script>

后端:

public void OnPost(int btn1,int btn2)

   //do your stuff...

结果:

【讨论】:

以上是关于以一种方法获取具有一种形式的多个按钮的值的主要内容,如果未能解决你的问题,请参考以下文章

Thymeleaf 以一种形式提交多个提交按钮

以一种形式检查多个单选按钮

CakePHP:从单个模型中检索多个记录以以一种形式进行编辑

如何在 django 中以一种形式组合多个模型? [复制]

如何在 laravel 上以一种形式使用两个控制器方法?

使用 Ajax 以一种形式上传数据和文件?