c# - 当我在 Javascript 中禁用它时,ASP.NET 组合框的值似乎发生了变化

标签 c# javascript asp.net combobox

我有一个表单,用户可以在其中从组合框中选择组件类型,并且根据该组件,他们可能无法从另一个组合框中选择数据类型。

当用户选择组件类型时,客户端 javascript 会触发更改,并在需要时设置数据类型组合框的值,并在需要时禁用数据类型组合框。奇怪的是:当该表单提交时,服务器端获取该数据类型组合框的值,而这不是我设置的值!

我似乎将其缩小为一行 javascript:

document.all("cmbDataType").disabled = true;

如果该行被注释掉,它仍然会根据组件类型设置为正确的值但不会被禁用,并且表单提交会根据客户端选择的值向服务器提供正确的值。

如果执行该行,那么尽管用户在那个禁用的组合框中看到了正确的值,但返回到服务器的值是不正确的。

我没能找到有同样问题的其他人,所以我希望这不是什么 super 奇怪的事情。浏览器是IE7,webapp是ASP.NET 2.0。感谢您的关注!

最佳答案

发生这种情况的原因是 ASP.NET 2.0 默认情况下不提交禁用控件的值。 (更准确地说,它不会在回发时更新服务器控件值。)您可以通过在 Page_Load 事件中放置以下行来覆盖它:

Page.Form.SubmitDisabledControls = true;

或者您可以在表单标签中设置值:

<form id="myForm" runat="server" SubmitDisabledControls="true">

关于c# - 当我在 Javascript 中禁用它时,ASP.NET 组合框的值似乎发生了变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/361581/

相关文章:

c# - SecureStringToGlobalAllocAnsi .NetCLR

c# - 如何确保始终触发 AppDomain.CurrentDomain.AssemblyResolve 事件?

javascript - 使用 JavaScript/JQuery 从上次选择中获取复选框值

javascript - 在 jQuery .css() 调用中使用 JS 变量来指定 CSS 属性的名称

c# - 网络 API : The 'CreateJsonSerializer' method threw an exception when attempting to create a JSON serializer

c# - 配置系统初始化失败

c# - 从字典中删除最旧的项目

javascript - 如何在 asp.net 用户控件中调整子列表框的高度

ASP.NET 正则表达式验证器无法在 Internet Explorer 7 上运行

asp.net - 无法在 Asp.net 中保存 session