我遇到了一个处理下拉列表的SelectedValue属性的奇怪问题。我们错误地将SelectedValue属性设置为无效选择(零),但我们没有意识到这个问题,因为在开发过程中没有抛出异常。在开发中,下面的代码执行没有问题,但在生产中它会抛出错误。
int val = GetValue(); // Note: The GetValue() method is incorrectly returning a 0
ddlDropdown.SelectedValue = val.ToString(); // This line should throw an error
在生产环境或开发环境中,下拉列表中没有值为0的项目。但是,在dev中,当执行此代码时,它什么都不做。在执行该行之前,ddlDropdown.SelectedValue属性为“1”,并且在执行该行之后它仍为“1”(即使代码试图将其设置为0)。但是在生产中,每次都会记录一个错误(“ddlDropdown有一个无效的SelectedValue ......”)。我甚至尝试在即时窗口中设置下拉列表的值 - 将其设置为有效值(例如“3”),但将其设置为“0”具有相同的结果 - 它根本不执行任何操作。
我已经研究了抛出的错误,并且我发现仅在回发期间抛出错误的引用,而不是初始页面加载。但是这个代码只在包含在if(!IsPostBack)中的地方调用,因此只应在初始页面加载时调用它。
我已修复代码,不再错误地将值设置为0,但我无法验证修复程序是否可以在生产中运行,因为我无法在我的开发环境中复制错误。
任何人都可以弄清楚为什么这段代码会在生产中抛出错误而不是在开发中?