【问题标题】:Validate more than two words as minimum on asp:textbox在 asp:textbox 上验证至少两个以上的单词
【发布时间】:2009-08-03 17:04:53
【问题描述】:

你好,我想验证输入,所以计算单词的方法如下:

public static string validateisMoreThanOneWord(string input, int numberWords)
        {
            try
            {
                int words = numberWords;
                for (int i = 0; i < input.Trim().Length; i++)
                {
                    if (input[i] == ' ')
                    {
                        words--;
                    }
                    if (words == 0)
                    {
                        return input.Substring(0, i);
                    }
                }
            }
            catch (Exception) { }
            return string.Empty;
        }

我把这个方法放在哪里,所以当方法在验证后返回空时,页面不会回发(如 AjaxToolKit 上的 RequireFieldValidator)

谢谢!

【问题讨论】:

    标签: c# asp.net webforms validation


    【解决方案1】:

    将其实现为custom validator。示例见http://aspnet.4guysfromrolla.com/articles/073102-1.aspx

    如果您不希望它在没有回发的情况下工作,您还应该在 Javascript 中实现验证的客户端版本。您可以让客户端版本对 C# 实现进行 AJAX 调用,但这是相当简单的逻辑 - 所以我会选择在 Javascript 中实现它并为用户保存 AJAX 请求。

    【讨论】:

      【解决方案2】:

      首先,你可以简化很多:

      public static bool validateIsMoreThanOneWord(string input, int numberWords)
      {
          if (string.IsNullOrEmpty(input)) return false;
      
          return ( input.Split(new char[] {' '}, StringSplitOptions.RemoveEmptyEntries).Length >= numberWords);    
      }
      

      此版本还具有易于扩展以包含其他空格(如制表符或回车符)的优点。

      下一步是您不能仅使用服务器端代码来阻止页面回发。相反,您需要使用 CustomValidator 并为它的 ClientValidationFunction 编写一些 javascript,看起来像这样:

      var numberWords = 2;
      function checkWordCount(source, args)
      {         
         var words = args.Value.split(' ');
         var count = 0;
         for (int i = 0; i<words.length && count<numberWords;i++)
         {
            if (words[i].length > 0) count++;
         }
         args.IsValid = (count >= numberWords);
         return args.IsValid;
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-06-18
        • 1970-01-01
        • 2016-09-11
        • 2019-05-28
        • 1970-01-01
        • 2012-04-14
        • 1970-01-01
        • 2017-07-05
        相关资源
        最近更新 更多