0

JS が無効になっているときにサーバー側で ASP.NET BasicDatePicker コントロールを検証しようとしていますが、イベントを発生させることができないようです。

JS Validation (.NET Validators を使用) がありますが、無効な日付を使用した検索のバッチをまだ受け取っています。これは、スパムボットまたはその他のボットネットが JavaScript 検証をバイパスしていることを示唆しています。FF アドオンを使用して JavaScript を無効にし、フィールドが検証されているかどうかをテストしましたが、ポストバック イベントは発生していないようです。

コードは以下のとおりです。どんな助けでも大歓迎です。

ASP.NET ASPX ページ

<div align="center">
    {EXTRA MARKUP REMOVED}
    <asp:Label ID="Label3" runat="server" Text="<%$ Resources:words, Arrival_Date %>"></asp:Label>
    <BDP:DateRangeValidator ID="DateRangeValidator1" runat="server" ErrorMessage="DateRangeValidator"
        ControlToValidate="datefrom" Text="**"></BDP:DateRangeValidator><BDP:IsDateValidator
            ID="IsDateValidator2" runat="server" ErrorMessage="IsDateValidator" ControlToValidate="datefrom"
            Text="*"></BDP:IsDateValidator><br />
    <BDP:BDPLite ID="datefrom" runat="server" TextBoxColumns="12" />
    &nbsp;<hlp:popup ID="popup4" runat="server" contextid="hlp_arrivaldate" />
    {EXTRA MARKUP REMOVED}
    <asp:Button ID="Button1" runat="server" Font-Size="11px" Text="<%$ Resources:words, Search %>"
        UseSubmitBehavior="False" OnClick="Button1_Click" />
    <div style="padding-bottom: 5px">
        <asp:Label ID="serverErrorMessage" runat="server" Visible="false" />
    </div>
</div>

BUTTON1_CLICK イベント (発火しないようです)

Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click

    'check for stuff in the date field
    If InStr(Me.datefrom.ToString, "http") > 0 Then Exit Sub
    If InStr(Me.datefrom.ToString, "//") > 0 Then Exit Sub
    If InStr(Me.txtPropertyLike.ToString, "http") > 0 Then Exit Sub
    If InStr(Me.txtPropertyLike.ToString, "//") > 0 Then Exit Sub

    'test the date, and exit if not valid
    Dim datetest As Date = CDate("01-Jan-2001")
    Try
        datetest = CDate(Me.datefrom.SelectedDate)
        If datetest < Today Or DateDiff(DateInterval.Year, Today, datetest) > 2 Then
            datetest = CDate("01-Jan-2001")
        End If
    Catch
    End Try
    If datetest = CDate("01-Jan-2001") Then
        serverErrorMessage.Text = "Date be within the next 2 calendar years."
        serverErrorMessage.Visible = True
        Exit Sub
    End If
End Sub

私はそれがおそらく愚かなことであることを知っています。何が原因なのか分からず、すでに髪の毛がないので、抜くものはありません。:(

JGe

4

1 に答える 1

0

私の理解によれば、Page.IsValid を使用すると問題が解決します。

お気に入り

Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
if (Page.IsValid)
   {
    // your code 
   } else {
   // some error message to user 
  }

このプロパティが true を返すには、現在の検証グループ内のすべての検証サーバー コントロールが正常に検証される必要があります。

それがあなたの問題を解決することを私に知らせてください。お力になれて、嬉しいです :)

于 2013-06-26T14:16:41.183 に答える