验证作为单独字段输入的日期/时间的部分

时间:2012-02-04 03:13:51

标签: asp.net validation

环境:ASP.NET 3.5,Visual Studio 2008

我有3个文本框

TextBox1.Text = "is a date value";
TextBox2.Text = "is hour of a datetime";
TextBox3.Text = "is minutes of a datetime";

(不要问为什么:)这是其中之一......它只是)

如果所有3个文本框的组合都是有效的日期时间,是否有办法使用单个asp.net验证器控件来检查(客户端和服务器端)?

此外,在我看来可以有各种可能性(即只需在其中一个文本框中输入内容,有效日期但无效时间等)。

如果不可能服务器端检查是什么样的?

例如,这是我到目前为止所做的:

protected void CustomValidator1_ServerValidate(object source, ServerValidateEventArgs args)
{
    DateTime dateOutput = default(DateTime);
    DateTime.TryParse(TextBox1.Text, out dateOutput);

    if (dateOutput != DateTime.MinValue)
    {
        string dateString = string.Empty;

        if (TextBox2.Text == string.Empty && TextBox3.Text == string.Empty)
            dateString = dateString = string.Format("{0} {1}:{2}", TextBox1.Text, DateTime.Now.Hour, DateTime.Now.Minute);
        DateTime.TryParse(dateString, out dateOutput);
    }
    args.IsValid = (dateOutput != DateTime.MinValue);
}

我错过了什么或者可以改进吗?

1 个答案:

答案 0 :(得分:0)

用户输入必须通过客户端脚本和服务器脚本进行验证。您可以选择customValidator。您还可以通过处理onsubmit

<form/>事件来验证输入
<script type="text/javascript">
  function validateMyForm(){
    //write code to validate user input.
    if(!succeed)
       return false;
    return true; 
  }
</script>
<form id="form1" runat="server" onsubmit="return validateMyForm()">
      ...
</form>