zoukankan      html  css  js  c++  java
  • jquery validator c# helper

            如果平时不习惯写javascript的情况下,使用jquery validator写起来就是比较头痛的事情,为了解决这一问题所以写了个针对jquery validator 的c# helper。使用helper后编写验证就能得到VS.NET的支持主要是提供感知功能方便编写。

    <script>
        $().ready(function () {
            on_signupForm();
        });
    </script>
    <%=Script.DotNet.JQueryHelper.Validate("signupForm")
            .Add("firstname", i => { i.required("Please enter your firstname"); })
            .Add("lastname", i => { i.required("Please enter your lastname"); })
            .Add("username", i => { i.required("Please enter a username").minlength(2, "Your username must consist of at least 2 characters"); })
            .Add("password", i => { i.required("Please provide a password").minlength(5,"Your password must be at least 5 characters long"); })
            .Add("confirm_password", i => { i.required("Please provide a password").minlength(5, "Your password must be at least 5 characters long").equalTo("Please enter the same password as above"); })
            .Add("email", i => { i.required().email(); })
            .Add("topic", i => { i.required("#newsletter:checked", null).minlength(2); })
            .Add("agree", i => { i.required(); })
            
    %>

    如果用javascript描述如下:

    <script>
    
         $().ready(function () {
           
             // validate signup form on keyup and submit
             $("#signupForm").validate({
                 rules: {
                     firstname: "required",
                     lastname: "required",
                     username: {
                         required: true,
                         minlength: 2
                     },
                     password: {
                         required: true,
                         minlength: 5
                     },
                     confirm_password: {
                         required: true,
                         minlength: 5,
                         equalTo: "#password"
                     },
                     email: {
                         required: true,
                         email: true
                     },
                     topic: {
                         required: "#newsletter:checked",
                         minlength: 2
                     },
                     agree: "required"
                 },
                 messages: {
                     firstname: "Please enter your firstname",
                     lastname: "Please enter your lastname",
                     username: {
                         required: "Please enter a username",
                         minlength: "Your username must consist of at least 2 characters"
                     },
                     password: {
                         required: "Please provide a password",
                         minlength: "Your password must be at least 5 characters long"
                     },
                     confirm_password: {
                         required: "Please provide a password",
                         minlength: "Your password must be at least 5 characters long",
                         equalTo: "Please enter the same password as above"
                     },
                     email: "Please enter a valid email address",
                     agree: "Please accept our policy"
                 }
             });
         });
    </script>

    从代码上来看是不是helper会简洁很多:) helper完整代码如下:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Text;
    namespace Script.DotNet
    {
        public class JQueryHelper
        {
    
            public static Validate Validate(string name)
            {
                return new Validate(name);
            }
           
        }
    
        public class Validate
        {
            private string mName;
    
            public Validate(string id)
            {
                mName = id;
               
            }
    
            private List<ValidateItem> mItems = new List<ValidateItem>(8);
    
            public Validate Add(string name, Action<ValidateItem> addaction)
            {
                ValidateItem item = new ValidateItem(name);
                mItems.Add(item);
                addaction(item);
                return this;
            }
    
            public override string ToString()
            {
                StringBuilder sb = new StringBuilder();
                ValidateItem item;
                sb.Append("<script>");
                sb.Append("function on_").Append(mName).Append("(){");
                sb.Append(" $('#").Append(mName).Append("').validate({\r\n");
                sb.Append("  rules: {\r\n");
                for (int i = 0; i < mItems.Count; i++)
                {
                    item = mItems[i];
                    if (i > 0)
                        sb.Append(",");
                    sb.Append(item.Name).Append(":{");
                    for (int k = 0; k < item.Items.Count; k++)
                    {
                        if (k > 0)
                            sb.Append(",");
                        sb.Append(item.Items[k].Name).Append(":").Append(item.Items[k].Value);
                    }
                    sb.Append("}");
                }
                sb.Append("},\r\n messages: {\r\n");
    
                for (int i = 0; i < mItems.Count; i++)
                {
                    item = mItems[i];
                    if (i > 0)
                        sb.Append(",");
                    sb.Append(item.Name).Append(":{");
                    if (item.HasMessage)
                    {
                        int count = 0;
                        for (int k = 0; k < item.Items.Count; k++)
                        {
                            if (count > 0)
                                sb.Append(",");
                            if (!string.IsNullOrEmpty(item.Items[k].Message))
                            {
                                sb.Append(item.Items[k].Name).Append(":'").Append(item.Items[k].Message).Append("'");
                                count++;
                            }
                        }
                    }
                    sb.Append("}");
                }
                sb.Append(" }\r\n");
                sb.Append("});\r\n");
                sb.Append("}");
                sb.Append("</script>\r\n");
                return sb.ToString();
            }
        }
    
        public class ValidateItem
        {
         
            
            public ValidateItem(string name)
            {
                Name = name;
                HasMessage = false;
            }
    
            public string Name { get; set; }
    
            public ValidateItem required()
            {
                return AddType("required", "true", null);
            }
    
            public ValidateItem required(string message)
            {
                return AddType("required", "true", message);
            }
            public ValidateItem required(string value,string message)
            {
                return AddType("required", "'"+value+"'", message);
            }
            public ValidateItem remote(string url)
            {
                return AddType("remote", url, null);
            }
    
            public ValidateItem remote(string url, string message)
            {
                return AddType("remote", url, message);
            }
    
            public ValidateItem remote(string url, string dataexpression, string message)
            {
                return AddType("remote", string.Format("{url:'{0}',data:{1}}", url, dataexpression), message);
            }
    
            public ValidateItem email()
            {
                return AddType("email", "true", null);
            }
    
            public ValidateItem email(string message)
            {
                return AddType("email", "true", message);
            }
    
            public ValidateItem url()
            {
                return AddType("url", "true", null);
            }
    
            public ValidateItem url(string message)
            {
                return AddType("url", "true", message);
            }
    
            public ValidateItem date()
            {
                return AddType("date", "true", null);
            }
    
            public ValidateItem date(string message)
            {
                return AddType("date", "true", message);
            }
    
            public ValidateItem dateISO()
            {
                return AddType("dateISO", "true", null);
            }
    
            public ValidateItem dateISO(string message)
            {
                return AddType("dateISO", "true", message);
            }
    
            public ValidateItem number()
            {
                return AddType("number", "true", null);
            }
    
            public ValidateItem number(string message)
            {
                return AddType("number", "true", message);
            }
    
            public ValidateItem digits()
            {
                return AddType("digits", "true", null);
            }
    
            public ValidateItem digits(string message)
            {
                return AddType("digits", "true", message);
            }
    
            public ValidateItem creditcard()
            {
                return AddType("creditcard", "true", null);
            }
    
            public ValidateItem creditcard(string message)
            {
                return AddType("creditcard", "true", message);
            }
    
            public ValidateItem equalTo(string control)
            {
                return AddType("equalTo", "'#" + control + "'", null);
            }
    
            public ValidateItem equalTo(string control, string message)
            {
                return AddType("equalTo", "'#"+control+"'", message);
            }
    
            /// <summary>
            /// $("#myform").validate({
            ///     rules: {
            ///         field: {
            ///             required: true,
            ///             accept: "xls|csv"
            ///         }
            ///      }
            ///});
            /// </summary>
            /// <param name="type"></param>
            /// <returns></returns>
            public ValidateItem accept(string type)
            {
                return AddType("accept", type, null);
            }
    
            /// <summary>
            /// $("#myform").validate({
            ///     rules: {
            ///         field: {
            ///             required: true,
            ///             accept: "xls|csv"
            ///         }
            ///      }
            ///});
            /// </summary>
            /// <param name="type"></param>
            /// <param name="message"></param>
            /// <returns></returns>
            public ValidateItem accept(string type, string message)
            {
                return AddType("accept", type, message);
            }
    
            public ValidateItem maxlength(int length)
            {
                return AddType("maxlength", length, null);
            }
    
            public ValidateItem maxlength(int length, string message)
            {
                return AddType("maxlength", length, message);
            }
    
            public ValidateItem minlength(int length)
            {
                return AddType("minlength", length, null);
            }
    
            public ValidateItem minlength(int length, string message)
            {
                return AddType("minlength", length, message);
            }
    
            public ValidateItem rangelength(int min,int max)
            {
                return AddType("rangelength", string.Format("[{0},{1}]",min,max), null);
            }
    
            public ValidateItem minlength(int min, int max, string message)
            {
                return AddType("rangelength", string.Format("[{0},{1}]", min, max), message);
            }
    
            public ValidateItem range(object min, object max)
            {
                return AddType("range", string.Format("[{0},{1}]", min, max), null);
            }
    
            public ValidateItem range(object min, object max, string message)
            {
                return AddType("range", string.Format("[{0},{1}]", min, max), message);
            }
    
            public ValidateItem max(object value)
            {
                return AddType("max", value, null);
            }
    
            public ValidateItem max(object value, string message)
            {
                return AddType("max", value, message);
            }
    
            public ValidateItem min(object value)
            {
                return AddType("min", value, null);
            }
    
            public ValidateItem min(object value, string message)
            {
                return AddType("min", value, message);
            }
    
            public ValidateItem AddType(ValidateType type, object value)
            {
                return AddType(Enum.GetName(typeof(ValidateType), type), value, null);
            }
    
            public ValidateItem AddType(ValidateType type, object value, string message)
            {
                return AddType(Enum.GetName(typeof(ValidateType), type), value, message);
            }
    
            public bool HasMessage
            {
                get;
                set;
            }
    
            public ValidateItem AddType(string type, object value, string message)
            {
                ValidateSubItem item = new ValidateSubItem { Name = type, Message = message, Value = value };
                if (!string.IsNullOrEmpty(item.Message))
                    HasMessage = true;
                Items.Add(item);
                return this;
            }
    
            private IList<ValidateSubItem> mItems = new List<ValidateSubItem>();
    
            public IList<ValidateSubItem> Items
            {
                get
                {
                    return mItems;
                }
            }
    
            public class ValidateSubItem
            {
                public string Name;
                public object Value;
                public string Message;
            }
        }
    
        public enum ValidateType
        {
            required,
            remote,
            email,
            url,
            date,
            dateISO,
            number,
            digits,
            creditcard,
            equalTo,
            accept,
            maxlength,
            minlength,
            rangelength,
            range,
            max,
            min
        }
    }
    访问Beetlex的Github
  • 相关阅读:
    Ueditor富文本编辑器
    ashx误删后,未能创建类型
    一个菜鸟的ASP.NET观光路线图
    地位尴尬的WebForm、ASP.NET核心知识(10)
    经典排序算法--归并排序
    经典排序算法--快速排序
    经典排序算法--冒泡排序
    经典排序算法--堆排序
    经典排序算法--简单选择排序
    经典排序算法--希尔排序
  • 原文地址:https://www.cnblogs.com/smark/p/2676521.html
Copyright © 2011-2022 走看看