Kur*_*ner 2 .net javascript c# asp.net validation
目标: 我有一个'EndDate'文本框,可以根据用户更改它进行更新.我希望能够在EndDateTextBox.Text中检查/验证日期并确保它小于今天的日期(格式为ex:2013/4/19).
我试过两种方法:
方法一
<asp:TextBox ID="HiddenTodayDate" Visible = "false" runat="server" />
<asp:CompareValidator ID="CompareEndTodayValidator" Operator="GreaterThan" Type="Date"
ControlToValidate="HiddenTodayDate" ControlToCompare="EndDateTextBox"
ErrorMessage="'End Date' must be before today's date" runat="server" />
Run Code Online (Sandbox Code Playgroud)
以及我的Page_Load方法中的以下内容:
HiddenTodayDate.Text = DateTime.Today.ToShortDateString();
Run Code Online (Sandbox Code Playgroud)
方法二
<asp:HiddenField ID="HiddenTodayDate" runat="server" />
<asp:CompareValidator ID="CompareEndTodayValidator" Operator="GreaterThan" Type="Date"
ControlToValidate="HiddenTodayDate" ControlToCompare="EndDateTextBox"
ErrorMessage="'End Date' must be before today's date" runat="server" />
Run Code Online (Sandbox Code Playgroud)
以及我的Page_Load方法中的以下内容:
HiddenTodayDate.Value = DateTime.Today.ToShortDateString();
Run Code Online (Sandbox Code Playgroud)
明智地将代码设置TextBox为false可以防止Validator看到它,但我当时并不知道它并且想要记录我的进程.当我尝试方法二时,我在调试时遇到以下错误:
无法验证
HiddenTodayDate由ControlToValidate property`CompareEndTodayValidator 引用的控件.描述:执行当前Web请求期间发生未处理的异常.请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息.
异常详细信息:System.Web.HttpException:无法验证由"CompareEndTodayValidator"的ControlToValidate属性引用的控件"HiddenTodayDate".
来源错误:
在执行当前Web请求期间生成了未处理的异常.可以使用下面的异常堆栈跟踪来识别有关异常的起源和位置的信息.
那么有没有办法以某种方式实现我的目标,而不必显示DateTime.Today某处?我宁愿保持我的代码尽可能简单和干净,而不是使用Javascript,但如果Javascript提供唯一的解决方法,那么就这样吧.代码将不胜感激.谢谢!
在得知ValueToCompare属性部分归因于Tim的帖子之后,我能够搜索并找到类似于我的问题并得到一个几乎有效的答案(必须将ASP.NET比较类型更改为String): 使用CompareValidator控件将用户输入日期与今天的日期进行比较
这是我的代码的样子:
ASP.NET:
<asp:CompareValidator ID="CompareEndTodayValidator" Operator="LessThan" type="String" ControltoValidate="EndDateTextBox" ErrorMessage="The 'End Date' must be before today" runat="server" />
Run Code Online (Sandbox Code Playgroud)
.净:
(在Page_Load方法中)
CompareEndTodayValidator.ValueToCompare = DateTime.Now.ToShortDateString();
Run Code Online (Sandbox Code Playgroud)