【问题标题】:Server side validation not firing when JS Disabled禁用 JS 时服务器端验证未触发
【发布时间】:2013-06-26 14:04:14
【问题描述】:

当 JS 被禁用时,我正在尝试在服务器端验证 ASP.NET BasicDatePicker 控件,但似乎无法触发事件。

有 JS 验证(使用 .NET 验证器),但我们仍然收到批量使用无效日期的搜索。这表明垃圾邮件机器人或其他僵尸网络正在绕过 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

我知道这可能很愚蠢。只是不知道是什么,因为我已经没有头发了,所以没有可以拔掉的。 :(

杰哥

【问题讨论】:

    标签: javascript asp.net vb.net


    【解决方案1】:

    根据我的理解,如果您使用 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,当前验证组中的所有验证服务器控件都必须验证成功。

    告诉我它可以解决您的问题。乐于助人:)

    【讨论】:

    • 感谢您的回复,这还没有解决这个问题,似乎 Button1_Click 事件没有触发,因此没有到达您的答案的执行点?
    猜你喜欢
    • 1970-01-01
    • 2017-11-04
    • 1970-01-01
    • 2013-02-27
    • 2010-10-16
    • 2011-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多