我有一個ASP.NET 3.5窗體,其中有幾個字段和一個ModalPopup中的子窗體。我遇到的問題是ModalPopup中的RequiredFieldValidator。出於某種原因,它會阻止在ModalPopup內回發。驗證器和提交按鈕都具有相同的ValidationGroup,它們是唯一的。下面是用於子形式的標記:ModalPopup內的RequiredFieldValidator導致問題
<%@ 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設置爲假),則子形式的職位。 RegularExpressionValidators沒有這個問題。我運行過FireBug,但是我沒有看到任何明顯的錯誤。
有什麼我失蹤了嗎?
你有你的正則表達式驗證設置它不會阻止在空場的一個方式後包的方式RequiredValidator會[0-9] *表示任意數量的字符(包括0)值爲0-9,所以它不會阻止回發爲空的領域。如果它是一個模式彈出窗口,是否沒有允許用戶「完成」模態任務的按鈕?如果是這樣,你可能想看看CustomValidator。您可以將其設置爲需要輸入,但只有當「完成」按鈕被單擊時,並且將其設置爲根本不會執行回發,而是留下頁面的按鈕來處理回發。 – GunnerL3510 2011-05-05 21:15:10
糟糕。抱歉。我複製了RegularExpression驗證器而不是罪魁禍首RequiredFieldValidator。我會解決它。 – 2011-05-05 22:24:05
你可以發佈你的完整標記嗎? – 2011-05-05 22:41:51