You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在.NET 4 Razor Pages中如何用单个按钮提交单选按钮值与查询

问题描述

在.NET 4的Razor Pages应用中,现有一个通过按钮触发的数据库查询(对应代码上部的下拉选单和"View result"按钮),希望将下方的单选按钮组的值与其一同提交,且尽量只用一个按钮。请问是否可行?能否通过ViewBag实现?该如何操作?

现有代码

<form method="post" id="queryForm" asp-controller="HomeController">
  <div class="input-group">
    <select id="sqlQuerriesDropDown" class="form-select" name="selectedQuery">
      @foreach (var SqlQuery in ViewBag.SqlQuerriesDropDown)
      {
        <option value="@SqlQuery.getQueryName()">@SqlQuery.getQueryName()</option>
      }
    </select>
    <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
    <!-- Schaltfläche Anzeigen -->
    <input type="submit" class="btn btn-primary" value="View result"/>
    <p>&nbsp;&nbsp;&nbsp;</p>
  </div>
  <div>
    <br />
    <label><b>Decimal separator</b></label><br />
    <label><input class="boost_radio" onclick="boostNo(1)" asp-for="Boost_No.Number" type="radio" name="mySeperator" value=0 checked="checked" /> Comma</label><br />
    <label><input class="boost_radio" onclick="boostNo(2)" asp-for="Boost_No.Number" type="radio" name="mySeperator" value=1 /> Point</label><br />
    <span asp-validation-for="Boost_No.Number"></span><br />
    <input type="submit" value="submit" name="myDelimitter" id="submit" />
  </div>
</form>
解决方案

完全可行,不需要用ViewBag实现表单提交传值——ViewBag仅用于后端向前端视图传递渲染数据(比如你用来填充下拉选单的ViewBag.SqlQuerriesDropDown),表单提交是前端向后端传值,直接通过表单元素的name属性绑定即可。具体操作步骤如下:

  • 移除多余提交按钮:删除代码中第二个<input type="submit" value="submit" name="myDelimitter" id="submit" />,只保留"View result"按钮作为唯一提交触发点。
  • 修正单选按钮冗余属性:去掉单选按钮上无效的ViewBag.RB="0"属性,同时修正拼写错误的onklick为onclick(如果该前端函数非必需也可直接移除)。
  • 控制器接收参数:在HomeController对应的Post方法中,添加与表单元素name匹配的参数,即可同时接收下拉选单和单选按钮的值:
    [HttpPost]
    public ActionResult Index(string selectedQuery, int mySeperator)
    {
        // 执行数据库查询逻辑,同时使用mySeperator处理小数分隔符需求
        // 示例:根据mySeperator的值(0=逗号/1=点)格式化查询结果
        // ...
        return View();
    }
    

补充说明

你的单选按钮已经设置了统一的name="mySeperator",这是表单提交传值的关键——同一组单选按钮必须共享相同的name,这样选中的值才会被正确传递到后端。而asp-for="Boost_No.Number"如果是绑定模型属性,也可以直接通过模型接收参数,效果和直接用参数接收一致。

内容的提问来源于stack exchange,提问作者Michael 7

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 05:45:42