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

如何将下拉列表选中项传递给控制器Upload方法的字符串参数

问题根因

表单提交时只会携带设置了name属性的表单元素值,你当前代码里的<select>下拉标签没有配置name属性,且属性名没有和后端方法的selectedItem参数匹配,所以后端无法接收到下拉框选中值。

修复步骤
  • 给<select>标签添加name="selectedItem"属性,属性值必须和后端字符串参数名完全一致,模型绑定才能正常匹配赋值。
  • 给默认提示选项<option>设置空value,避免用户未选择时直接把提示文本"Choose a Database"作为有效值传入后端。

修改后的表单下拉部分代码如下:

<div class="form-group">
    <select class="form-control-sm" name="selectedItem">
        <option value="" selected>Choose a Database</option>
        <option value="SICS">SICS</option>
        <option value="TranslationTable">Translation Table</option>
    </select>
</div>

其余表单代码不需要改动,提交表单时下拉框选中的value就会自动绑定到后端Upload方法的selectedItem参数上。

可选补充校验

如果提交时出现400错误,是因为你配置了[ValidateAntiForgeryToken]防伪验证,只需要在<form>标签内部任意位置添加防伪令牌即可:

@Html.AntiForgeryToken()

同时建议后端增加参数合法性校验,避免无效请求:

[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Upload(IFormFile DBTemplate, string selectedItem)
{
    if (string.IsNullOrWhiteSpace(selectedItem))
    {
        ModelState.AddModelError(string.Empty, "请先选择对应的数据库类型");
        // 替换为你的视图返回逻辑
        return View();
    }
    if (DBTemplate == null || DBTemplate.Length == 0)
    {
        ModelState.AddModelError(string.Empty, "请选择要上传的xls/xlsx格式Excel文件");
        return View();
    }
    // 后续业务处理逻辑
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 23:24:14