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

ASP.NET MVC中通过Ajax和JSON传递联动下拉列表值至控制器

解决联动下拉列表选中值无法传递到控制器Action的问题

嘿,我帮你分析下这个问题,大概率是参数传递的方式或名称不匹配导致的,咱们一步步排查和修改:

1. 修正前端AJAX请求的参数传递逻辑

你当前的代码存在几个容易踩坑的点:

  • GET请求不需要设置contentType: "application/json; charset=utf-8",因为GET参数是拼接在URL上的,而非放在请求体里,这个设置反而可能干扰参数解析
  • 没有明确指定参数的键名,导致控制器无法正确绑定参数
  • 变量名stateId和下拉框IDbranchValue不对应,容易混淆逻辑

修改后的JavaScript代码:

<script>
$(document).ready(function () {
    $("#branchValue").change(function () {
        // 变量名和下拉框对应,更清晰
        var branchId = $("#branchValue").val();
        $.ajax({
            async: true,
            url: '@Url.Action("GetPlatesList", "Properties")',
            type: 'GET',
            // 明确传递参数,键名要和控制器Action的参数名完全一致
            data: { branchId: branchId },
            success: function (response) {
                // 示例:填充第二个下拉框的逻辑
                var plateDropdown = $("#plateValue"); // 假设第二个下拉框ID为plateValue
                plateDropdown.empty();
                $.each(response, function (index, item) {
                    plateDropdown.append($('<option></option>').val(item.Value).text(item.Text));
                });
            },
            error: function (xhr, status, error) {
                console.log("请求出错:" + error);
            }
        });
    });
});
</script>

2. 确保控制器Action的参数名和前端一致

你的GetPlatesList Action方法必须接收和前端传递的键名完全相同的参数,示例代码如下:

public ActionResult GetPlatesList(int branchId)
{
    // 根据branchId获取对应的plates列表(示例逻辑,替换成你的业务代码)
    var plates = _plateRepository.GetByBranchId(branchId);
    // 返回符合下拉框需求的JSON结构
    return Json(plates.Select(p => new { Text = p.PlateName, Value = p.PlateId }), JsonRequestBehavior.AllowGet);
}

注意:如果允许下拉框选择空值,要把参数改成int? branchId,避免参数绑定失败。

3. 额外排查点

  • 打开浏览器开发者工具(F12),查看Console标签是否有AJAX请求报错
  • 切换到Network标签,检查请求URL是否包含正确的参数(比如.../GetPlatesList?branchId=123)
  • 如果是.NET Core项目,确保Action上标注了[HttpGet]特性,返回类型用IActionResult

这样调整后,应该就能把选中的下拉值正确传递到控制器的Action方法里了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:32:16