RequiredFieldValidator внутри ModalPopup вызывает проблемы - PullRequest
2 голосов
/ 05 мая 2011

У меня есть форма ASP.NET 3.5 с несколькими полями и вложенной формой внутри ModalPopup. У меня проблема с RequiredFieldValidator внутри ModalPopup. По какой-то причине это предотвращает пост обратно в ModalPopup. И валидатор, и кнопки отправки имеют одну и ту же группу ValidationGroup, которая является уникальной для них. Вот разметка для формы:

<%@ 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, но я не вижу никаких очевидных ошибок.

Я что-то упускаю?

Ответы [ 3 ]

2 голосов
/ 11 мая 2011

Боже мой, я так глуп! >: (* ​​1001 *

Нашел причину проблемы. Была еще одна копия того же элемента управления, вложенная в другой элемент управления. И (конечно) с тем же именем группы ValidationGroup, что и в моем первом элементе управления, все обязательные валидаторы полей не работают!

Argh! Кандидат на Ежедневный WTF!

Извините, что потратил все время впустую: (

1 голос
/ 10 мая 2011

У меня тоже странные проблемы с modalpopup. Я бы посоветовал вам попробовать что-то другое, например, элемент управления numeric updown из ajaxcontroltoolkit, если вы его уже используете. Так что для этого вам не нужен валидатор.

<%@ 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 голос
/ 10 мая 2011

Не могли бы вы проверить, находятся ли ваша кнопка (или какой-либо другой элемент управления), открывающий всплывающее окно, и модуль расширения modaldialog за пределами панели обновления?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...