带有textmode = date的Asp文本框无法验证大于当前日期

时间:2013-11-12 03:13:59

标签: asp.net vb.net validation types textbox

我有一个类型为= DateTimeLocal的asp文本框。我试图验证它,以确保它的日期时间值大于当前日期时间。我已经尝试比较验证器在aspx和vb(服务器)端加载值。我尝试过范围验证器和自定义验证器。我的自定义验证器从不触发。范围和比较始终返回无效。

如何验证提供的type = DateTimeLocal的文本框中输入的文本是否大于当前日期时间?

ASPX页面

                <asp:TextBox CssClass="form-control" ID="txtStartDate" TextMode="DateTimeLocal" runat="server" type="date"></asp:TextBox>

            <asp:RequiredFieldValidator ID="rfvStartDate" runat="server" ErrorMessage="Start Date is required" Text="*"
                ControlToValidate="txtStartDate" ValidationGroup="AddEvent"></asp:RequiredFieldValidator>

            <asp:RangeValidator ID="rgvStartDate" runat="server" ErrorMessage="Start Date must be a date after the current Date"
                text="*" ValidationGroup="AddEvent" ControlToValidate="txtStartDate" Type="Date"></asp:RangeValidator>

===================================

后端

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

    rgvStartDate.MinimumValue = DateTime.Now.Date.AddDays(1.0).ToString("d")
    rgvStartDate.MaximumValue = DateTime.Now.Date.AddDays(100.0).ToString("d")

End Sub

===================================== 的解决方案

  <div class="form-group">
        <label class="col-lg-4 control-label" for="txtStartDate">Start Date:</label>
        <div class="col-lg-8">

            <asp:TextBox CssClass="form-control" ID="txtStartDate" TextMode="Date" runat="server"></asp:TextBox>

            <asp:RequiredFieldValidator ID="rfvStartDate" runat="server" ErrorMessage="Start Date is required" Text="*"
                ControlToValidate="txtStartDate" ValidationGroup="AddEvent"></asp:RequiredFieldValidator>

            <asp:RangeValidator ID="rgvStartDate" runat="server" ErrorMessage="Start Date must be a date after the current Date"
                text="*" ValidationGroup="AddEvent" ControlToValidate="txtStartDate" Type="Date"></asp:RangeValidator>

        </div>
    </div>

           <div class="form-group">
        <label class="col-lg-4 control-label" for="txtStartDateTime">Start Time:</label>
        <div class="col-lg-8">

            <asp:TextBox CssClass="form-control" ID="txtStartDateTime" TextMode="Time" runat="server"></asp:TextBox>

            <asp:RequiredFieldValidator ID="rfvStartDateTime" runat="server" ErrorMessage="Start Time is required" Text="*"
                ControlToValidate="txtStartDateTime" ValidationGroup="AddEvent"></asp:RequiredFieldValidator>

        </div>
    </div>

最初我在同一个文本框中有时间和日期,但这导致我的验证不起作用。解决方案是为时间创建一个单独的文本框,然后让日期为自己。然后当你去添加时,你可以把日期和时间放在一起。

  • <asp:TextBox CssClass="form-control" ID="txtStartDate" TextMode="DateTimeLocal" runat="server" type="date"></asp:TextBox>

1 个答案:

答案 0 :(得分:0)

您需要在Page_Load上以编程方式更改验证程序的最小范围。您还必须使用一些虚拟格式设置验证器的最小值和最大值(Min - 1/1/1999,Max - 1/1/2045)。

这会将验证者的最小值设置为您想要的日期。一天加上当前日期。

DateRangeValidator.MinimumValue = DateTime.Now.Date.AddDays(1.0).ToString("d");

这应该有用。