3
我不明白如何在轉發器中進行適當的自定義服務器端驗證。.NET轉發器 - 自定義服務器驗證
我有三列Repeater控件: 1)註冊 - 複選框 2)出席 - 複選框 3)時間 - 文本
我需要編寫驗證時間文本框的值服務器端自定義驗證。
現在我寫了下面的自定義驗證我的中繼器:
<asp:Repeater runat="server" ID="rptResidents" OnItemDataBound="rptResidents_ItemDataBound">
....
<asp:CheckBox runat="server" CssClass="RegisterSpan" name="RegisterChkName" ID="chkRegister" />
<asp:CheckBox runat="server" CssClass="AttendedSpan" name="AttendedChkName" ID="chkAttended" />
<asp:TextBox runat="server" ID="txtTime" Width="30px" MaxLength="3" Columns="3"></asp:TextBox>
<asp:CustomValidator runat="server" Width="1px" ID="valTimeRange" ControlToValidate="txtTime" OnServerValidate="valTimeRange_ServerValidate" Text="*" ErrorMessage="Minutes cannot exceed the minutes of the event" />
....
服務器端驗證功能:
protected void valTimeRange_ServerValidate(object sender, ServerValidateEventArgs e)
{
int maxAllowedMinutes = 0;
maxAllowedMinutes = Convert.ToInt32(this.txtMaxAllowedMinutes.Text);
int val = Convert.ToInt32(e.Value);
if (val > maxAllowedMinutes)
{
e.IsValid = false;
}
else
{
e.IsValid = true;
}
}
這工作得很好。但我需要添加額外的邏輯。我還需要使用複選框 - 註冊並參加我的自定義服務器端驗證。
所以的ServerValidate功能看起來像:
protected void valTimeRange_ServerValidate(object sender, ServerValidateEventArgs e)
{
if (CHECKBOX_REGISTER_IS_CHECKED && CHECKBOX_ATTENDED_IS_CHECKED) //?????
{
DO_VALIDATION_DESCRIBED_ABOVE
}
else
{
e.IsValid = true; //NO NEED TO VALIDATE TIME HERE OR ANY OTHER LOGIC COULD BE HERE
}
}
所以這裏的問題是 - 我不understnd如何讓服務器端驗證方法複選框值(兩個複選框來自中繼器)。
我想我找到了一個很好的答案爲您的問題:http://stackoverflow.com/a/14654349/2914856 我看到你從文本字段獲得maxAllowedMinutes。也許這將是很好的使用JavaScript或jQuery來驗證這些控件並驗證客戶端。除非你有理由不要 使用javascripts。 – 2013-10-25 14:11:59