首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ModalPopup内部的RequiredFieldValidator导致问题

ModalPopup内部的RequiredFieldValidator导致问题
EN

Stack Overflow用户
提问于 2011-05-06 03:34:25
回答 3查看 8.3K关注 0票数 2

我有一个包含多个字段的ASP.NET 3.5表单和一个ModalPopup中的子表单。我遇到的问题是ModalPopup内部的RequiredFieldValidator。由于某些原因,它阻止post返回到ModalPopup中。验证器和提交按钮都具有唯一的相同ValidationGroup。下面是该子窗体的标记:

代码语言:javascript
复制
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="RoomBuilder.ascx.cs" Inherits="Admin_Controls_RoomBuilder" %>
<link href="../../../../style/FlexStyle.css" rel="stylesheet" type="text/css" id="style"
    runat="server" visible="false" />
<asp:ScriptManagerProxy ID="ScriptManagerProxy1" runat="server" />
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
    <ContentTemplate>
        <div class="form" style="width: 420px; height: 500px; padding: 3px; position: relative;
            text-align: center;">
            <div style="width: 280px">
                <div class="item smalltitle ">
                    Title:

                </div>
                <div class="item">
                    <asp:TextBox ID="txtTitle" runat="server" Width="250px"></asp:TextBox>
                </div>
                <div class="item smalltitle gapontop">
                    Description:
                </div>
                <div class="item">
                    <asp:TextBox ID="txtDesc" runat="server" Width="250px" Height="40px" TextMode="MultiLine"></asp:TextBox>
                </div>
                <div class="item gapontop">
                    <div class="smalltitle floatLeft" style="width: 120px;">
                        Room Number
                    </div>
                    <div class="smalltitle floatLeft" style="width: 120px;">
                        Phone
                    </div>
                </div>
                <div class="item">
                    <div class="floatLeft" style="width: 120px;">
                        <asp:TextBox ID="txtRoomNo" runat="server" Width="100px"></asp:TextBox>
                    </div>
                    <div class="floatLeft" style="width: 120px;">
                        <asp:TextBox ID="txtPhone" runat="server" Width="100px"></asp:TextBox>
                    </div>
                </div>
                <div class="item smalltitle gapontop ">
                    Type:
                </div>
                <div class="item">
                    <asp:TextBox ID="txtType" runat="server" Width="250px"></asp:TextBox>
                </div>
                <div class="item smalltitle gapontop ">
                    Number of Seats:
                    <asp:RequiredFieldValidator ID="RequiredFieldValidatortxtNoSeats" runat="server" ErrorMessage="*" 
                        ControlToValidate="txtNoSeats" ValidationGroup="roomVal"></asp:RequiredFieldValidator>
                </div>
                <div class="item">
                    <asp:TextBox ID="txtNoSeats" runat="server" Width="50px"></asp:TextBox>
                    <asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" ErrorMessage="Not a number"
                        ControlToValidate="txtNoSeats" ValidationGroup="roomVal" ValidationExpression="[0-9]*"></asp:RegularExpressionValidator>
                </div>
            </div>            
            <!-- ************************************ -->
            <div class="topBorder" style="width: 100%; height: 35px; position: absolute; bottom: -8px;
                right: 2px; text-align: right; padding-top: 11px;">
                <asp:Button ID="btnCancel" runat="server" CssClass="button" Text="Cancel" CausesValidation="false"
                    OnClick="btnCancel_Click" ValidationGroup="roomVal" />
                <asp:Button ID="btnSave" runat="server" CssClass="button" Text="Save" OnClick="btnSave_Click" CausesValidation="true" ValidationGroup="roomVal" />
            </div>
        </div>
    </ContentTemplate>
</asp:UpdatePanel>

删除验证器(或将CausesValidation设置为false)时,子窗体将发布。RegularExpressionValidators没有这个问题。我已经运行了FireBug,但我没有看到任何明显的错误。

我是不是漏掉了什么?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-05-11 05:55:10

天哪,我太傻了!!>:(

已找到问题的原因。同一控件的另一个副本嵌套在另一个控件中。当然,与我的第一个控件具有相同的ValidationGroup名称,所有必需的字段验证器都无法工作!

啊!参加每日WTF的候选人!

对不起,浪费了大家的时间:

票数 2
EN

Stack Overflow用户

发布于 2011-05-10 15:46:12

你能检查一下你的按钮(或其他控件)打开弹出窗口和modaldialog扩展器是否在更新面板之外吗?

票数 1
EN

Stack Overflow用户

发布于 2011-05-10 16:03:57

我在modalpopup上也遇到了奇怪的问题。我建议你尝试一些不同的东西,例如来自ajaxcontroltoolkit工具包的numericupdown控件,如果你已经在使用它的话。所以你不需要任何验证器。

代码语言:javascript
复制
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="cc1" %>

<div class="item smalltitle gapontop ">
                    Number of Seats:
                </div>
                <div class="item">
                    <asp:TextBox ID="txtNoSeats" runat="server" Width="50px"></asp:TextBox>             
                    <cc1:NumericUpDownExtender ID="txtNoSeatsExt" runat="server"
                        Enabled="true" Minimum="1" Maximum="100" TargetControlID="txtNoSeats" Width="50" />
                </div>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5903151

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档