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

ASP.NET MVC级联下拉框仅Index页生效 Create视图无法运行问题求助

问题排查及解决方案
  • 路径错误(最常见原因)
    你当前AJAX用的是相对路径url: "getDistricts",在Index视图下当前路由是/Pessoas/Index,相对路径会被解析为/Pessoas/getDistricts,能正常请求接口。但在Create视图下当前路由是/Pessoas/Create,相对路径会被解析为/Pessoas/Create/getDistricts,接口不存在自然请求失败。

修复方案:将AJAX的url改为绝对路径,或者用Url.Action辅助方法生成正确路由:

url: '@Url.Action("getDistricts", "Pessoas")'

如果你的JS是写在独立的js文件里不能用Razor语法,就硬编码为/Pessoas/getDistricts即可。

  • Create的GET方法未给ViewBag赋值
    你当前贴的控制器代码只有Index方法给ViewBag.Gabinetes赋值了SelectList,如果Create对应的GET方法没有写相同的赋值逻辑,视图里的@Html.DropDownList("Gabinetes", null...)会因为数据源为空渲染不出来,自然不会触发change事件。

修复方案:在Create的GET方法里补全赋值逻辑:

public ActionResult Create()
{
    ViewBag.Gabinetes = new SelectList(db.Gabinetes, "GabineteId", "Nome");
    return View();
}
  • JS加载顺序错误
    如果你的JQuery库是在布局页末尾引入的,但你把这段JS代码写在了Create视图的顶部,会因为JQuery还未加载完成,$变量未定义导致事件绑定失败。

修复方案:把JS代码放到JQuery引入语句的后面,或者用布局页的Scripts节包裹代码,确保JQuery加载完成后再执行。

  • 元素ID被修改
    如果你Create视图用的是强类型辅助方法@Html.DropDownListFor(m => m.xxx.Gabinetes...),渲染出来的元素ID会自动加前缀,不是Gabinetes,导致选择器找不到元素,事件绑定失效。

修复方案:打开浏览器F12开发者工具,检查Gabinete下拉的实际ID,把JS里的选择器替换为实际ID,或者给下拉手动指定id属性:

@Html.DropDownListFor(m => m.xxx, (SelectList)ViewBag.Gabinetes, new { id = "Gabinetes", @class = "form-control" })

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 22:54:03