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

为何这段JavaScript仅禁用嵌套视图表单?

问题解答

为什么脚本只禁用嵌套视图的表单元素?

你的禁用脚本 $("#Form *").prop("disabled", true); 遵循以下选择逻辑:

  • #Form:通过元素ID精准匹配页面上ID为Form的元素
  • *:选中该元素下的所有后代元素

也就是说,只有ID为Form的容器(也就是你嵌套视图TheView.cshtml里的表单或控件容器)内的所有表单控件会被设置为禁用状态。

而页面上的主表单是通过 @using (Html.BeginForm("Modify", "Controller", FormMethod.Post)) 生成的,默认情况下这个表单元素不会带有id="Form"属性,因此不会被脚本选中,自然不会被禁用。

验证建议

打开浏览器开发者工具(F12)查看页面DOM结构就能确认:

  • 嵌套视图渲染后的元素,外层容器(通常是<form>标签)会带有id="Form"
  • 主表单的DOM元素,要么没有ID,要么是其他自定义/自动生成的值

优化方向(可选)

如果想更清晰地控制禁用范围,可以:

  • 给嵌套视图的表单明确指定唯一ID:在TheView.cshtml的表单标签里加上id="NestedForm",脚本改成 $("#NestedForm *").prop("disabled", true);,避免和其他元素ID冲突
  • 给主表单也指定ID方便后续操作:@using (Html.BeginForm("Modify", "Controller", FormMethod.Post, new { id = "MainForm" }))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 05:20:01