UpdatePanel中的CustomValidator在IE9中奇怪地工作

时间:2012-11-27 17:51:01

标签: asp.net internet-explorer-9 updatepanel

我有CustomValidator控件内的Wizard位于UpdatePanel内。

如果没有UpdatePanel,一切都按预期工作,但只有在添加UpdatePanel后,IE9中的事情才会变得奇怪。

在向导的一个步骤中,我有一个GridView通过搜索填充,所有这些都可以正常工作。

<asp:CustomValidator ID="cvSelectedUser" runat="server"
    CssClass="Validator"
    ErrorMessage="You must select a user to alter before you may continue"
    OnServerValidate="cvSelectedUser_ServerValidate">
</asp:CustomValidator>

<asp:Panel ID="pSearchExisting" runat="server"
    Height="120px"
    ScrollBars="Vertical">
    <asp:GridView ID="gvSearchExisting" runat="server"
        AutoGenerateColumns="false"
        DataKeyNames="UniqueID"
        EmptyDataText="No users found from your search."
        Width="95%">
        <AlternatingRowStyle CssClass="GridViewAlternatingRow" />
        <HeaderStyle CssClass="GridViewHeader" />
        <SelectedRowStyle CssClass="GridViewSelectedRow" />
        <Columns>
            <asp:CommandField ShowSelectButton="True" />
            <asp:BoundField DataField="EmployeeID" HeaderText="EmployeeID" SortExpression="EmployeeID" />
            <asp:BoundField DataField="Name" HeaderText="Name" SortExpression="Name" />
            <asp:BoundField DataField="UserID" HeaderText="User ID" SortExpression="UserID" />
        </Columns>
    </asp:GridView>
</asp:Panel>

CustomValidator用于确保用户在继续之前选择了搜索结果,并且仅阻止用户进入下一个向导步骤。

protected void cvSelectedUser_ServerValidate(object sender, ServerValidateEventArgs e)
{
    e.IsValid = true;
    if (gvSearchExisting.SelectedIndex == -1)
        e.IsValid = false;
}

这在向导事件中已得到确认。

protected void wUserID_NextButtonClick(object sender, WizardNavigationEventArgs e)
{
    if (Page.IsValid == false)
        return;

    // process navigation
}

在IE9(仅)中发生的奇怪的事情是,如果您单击向导上的“下一步”按钮而您没有从GridView中选择记录,则会阻止您转到下一个步骤,但CustomValidator错误消息未显示。

用户可以继续点击下一步,并且不会显示错误消息。然而,奇怪的是,如果您单击页面,失去Next按钮的焦点,然后再次单击Next按钮,它将显示错误消息。

为了让它更麻烦,这可以在Chrome,Firefox,IE8等中正常运行。只是不是IE9。

作为回顾

IE9中未显示错误消息

  • 不要选择用户
  • 根据需要多次单击“下一步”按钮
  • 未显示任何消息

IE9中显示错误消息

  • 不要选择用户
  • 单击“下一步”按钮
  • 取消对焦“下一步”按钮(单击页面上的其他位置,如背景上的空白区域)
  • 再次点击“下一步”按钮
  • 显示消息

有关如何解决这个问题的想法吗?

我确实通过https://stackoverflow.com/a/12926317/935779找到了解决方案。这只会迫使IE9进入兼容模式。我宁愿做出正确的修复。

<meta http-equiv="X-UA-Compatible" content="IE=IE8" />

0 个答案:

没有答案