jquery validator c# helper

來源:互聯網
上載者:User

        如果平時不習慣寫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    }}
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.