Dav*_*ini 4 vb.net asp.net firefox html-select
TL,DR: Firefox(仅Firefox)无法在页面完全刷新时显示select标记为 的右侧子元素,即使它在 DOM 中是正确的(但仅在某些条件下)。selected="selected"
(我不相信这是HTML select 的重复,在 DOM 中选择了正确的选项,但在 firefox 中显示了错误的项目,因为我没有使用ember.js。)
我正在 ASP.NET WebForms 中构建“软件管理/更新服务器”。它存储应用程序的主副本,并通过简单的 API 提供下载和更新。每个应用程序(或在代码中称为“应用程序”)都有 aDeptID和 a ,它们是 GUID,与各自的和表GroupID相关。各有田地也。DeptGroupGroupDeptID
在一个用于编辑所选软件应用程序详细信息的特定页面上,非回发请求(例如http://localhost/admin/app/edit.aspx?id=guid-here)将导致调用数据库以填充页面上的字段数据。
简而言之,ASP.net 运行时Page_Load事件执行以下操作:
id查询字符串中是否提供了参数\nddlDept DropdownList(呈现为 HTMLselect元素)Deptid的DataSetddlGroup DropdownList填充表中(另一个select)中的选项Group,与DeptID从App数据集中提取的选项相匹配App填充数据集中所有表单字段的数据需要注意的重要事项:当您单击 时Save,页面将回发到服务器,并将字段数据转储到数据库中。如果保存操作成功,浏览器将被指示使用重定向到当前页面的 URLResponse.Redirect(Request.Url.ToString),从而导致页面的“干净加载”(非回发加载)。
成功保存页面后,按 F5 或单击刷新应会导致页面再次干净加载(非回发),并且应填充所有字段,就像直接在页面上点击 URL 一样。
\n成功保存页面后,按 F5 或单击刷新会以非回发方式重新加载页面(在 VS 调试中验证),但 select 元素ddlGroup呈现“默认”/第一项(“选择一个”)而不是该项目selected="selected"在 DOM 中标记。
我已经单步执行了debug \xe2\x80\x94 中的每一行VB 代码,当服务器在“保存后”和所谓的“干净”加载之后发回页面时,ddlGroup代码中的值始终是正确的门。只有在浏览器中,特别是在 Firefox 中,显示的值才会设置为错误的项目,即使它在 DOM 中是正确的。再次刷新根本没有帮助。当我尝试再次保存时,RequiredField 验证器ddlGroup抱怨该字段无效,尽管它在 DOM 中应该是正确的。
在我看来,这是一个非常严重的 Firefox 错误。
\n想法?
\n因此,这并不是我真正认为的合适的“解决方案”,而是更稳定的解决方法。
添加autocomplete="off"到有问题的选择(aspx 标记中的 DropDownList)可以神奇地防止 Firefox 搞乱选择中显示的元素,从而始终显示标记为正确的元素selected="selected"。
我已经将它添加(并且将从现在开始将其添加)到我的所有 DropDownLists/选择中...感谢 Firefox。