国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

ASP.NET MVC和WebForm 輕松實(shí)現(xiàn)前端和后端的雙重驗(yàn)證 jquery.validate+ValidationSugar

2019-11-17 02:08:55
字體:
供稿:網(wǎng)友

asp.net MVC和WebForm 輕松實(shí)現(xiàn)前端和后端的雙重驗(yàn)證 jquery.validate+ValidationSugar

上次不足的改進(jìn)

可能上一個(gè)貼子給大家?guī)砗芏嗾`解,所以我這次把DEMO完善了兩個(gè)版本 【ASP.NET WEBFROM】和【 ASP.NET MVC】

修改了一些BUG,并且修改了一些細(xì)了

在上個(gè)貼子里有人說,看了response.write就全身不舒服,所以也就寫了基于異步提交的例子

功能介紹

ValidationSugar.cs 負(fù)責(zé)后臺(tái)驗(yàn)證和前端 form 元素的 驗(yàn)證 屬性綁定

ValidationSugar.js 對(duì)jquery.validate在進(jìn)行了一個(gè)封裝來負(fù)責(zé)前端的驗(yàn)證

注意:ValidationSugar.cs

現(xiàn)在可以支持

1、HTML5默認(rèn)驗(yàn)證功能

2、jquery.validate

3、webform demo1里面的一個(gè)HTML5+CSS3的驗(yàn)證

其它的前端驗(yàn)證可以自已去擴(kuò)展

后臺(tái):

前臺(tái):

1、先引用4個(gè)腳本:

    <script src="/Content/jquery-validation-1.13.1/lib/jquery-1.9.1.js" type="text/javascript"></script>    <script src="/Content/jquery-validation-1.13.1/dist/jquery.validate.js"></script>    <script src="/Content/ValidationSugar.js" type="text/Javascript"></script>    <script src="/Content/jquery-validation-1.13.1/lib/jquery.form.js" type="text/javascript"></script>

  

2、腳本調(diào)用就這么簡單

   <script type="text/javascript">        $(function () {            var factory = new validateFactory($("form"));            factory.init();            $("#btnSubmit").click(function () {                //異步方式                factory.AjaxSubmit(function () {                    $("form").ajaxSubmit({                        type: "post",                        url: "/home/post",                        dataType:"json",                        success: function (msg) {                            alert(msg.Message)                        }                    })                });            });        });    </script>

  

3、HTML代碼

DEMO下載地址:http://git.oschina.net/sunkaixuan/ValidationSuarMVC (包含WEBFROM)

因?yàn)椴艑懥?天難免會(huì)有沒有考慮到的地方,我在以后工作中慢慢更新的,謝謝觀看。

封裝代碼:

ValidationSugar.cs:
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Text.RegularExPRessions;namespace SyntacticSugar{    /// <summary>    /// ** 描述:可以方便實(shí)現(xiàn)前后端雙驗(yàn)證,基于jquery    /// ** 創(chuàng)始時(shí)間:2015-6-4    /// ** 修改時(shí)間:-    /// ** 作者:sunkaixuan    /// ** 使用說明:http://m.survivalescaperooms.com/sunkaixuan/p/4550580.html    /// ** git: http://git.oschina.net/sunkaixuan/SyntacticSugar    /// </summary>    public class ValidationSugar    {        private static List<ValidationOption> ValidationOptionList = new List<ValidationOption>();        /// <summary>        /// 前臺(tái)注入        /// </summary>        /// <param name="pageKey"></param>        /// <param name="itemList"></param>        public static string GetInitScript(string pageKey, List<OptionItem> itemList)        {            //初始化后不在賦值            if (ValidationOptionList.Any(it => it.PageKey == pageKey))            {                ValidationOptionList.RemoveAll(it => it.PageKey == pageKey);            }            ValidationOption option = new ValidationOption();            string uk = Guid.NewGuid().ToString().Replace("-", "");//唯一函數(shù)名            string script = @"<script>var bindValidation{1}=function(name,params){{     var selectorObj=$(""[name='""+name+""']"").last();     selectorObj.after(""<span class=/""form_hint/"">""+params.tip+""</span>"");     if(params.pattern!=null)     selectorObj.attr(""pattern"",params.pattern);     if(params.placeholder!=null)     selectorObj.attr(""placeholder"",params.placeholder);     if(params.isRequired==true)     selectorObj.attr(""required"",params.isRequired);}}{0}</script>";            StringBuilder itemsCode = new StringBuilder();            foreach (var item in itemList)            {                switch (item.Type)                {                    case OptionItemType.Mail:                        item.Pattern = @"^[//w-]+(//.[//w-]+)*@[//w-]+(//.[//w-]+)+$";                        break;                    case OptionItemType.Int:                        item.Pattern = @"^//d{1,11}$";                        break;                    case OptionItemType.Double:                        item.Pattern = @"^//d{1,11}$";                        break;                    case OptionItemType.IdCard:                        item.Pattern = @"^(//d{15}$|^//d{18}$|^//d{17}(//d|X|x))$";                        break;                    case OptionItemType.Date:                        item.Pattern = @"^(((1[8-9]//d{2})|([2-9]//d{3}))([-///])(10|12|0?[13578])([-///])(3[01]|[12][0-9]|0?[1-9])$)|(^((1[8-9]//d{2})|([2-9]//d{3}))([-///])(11|0?[469])([-///])(30|[12][0-9]|0?[1-9])$)|(^((1[8-9]//d{2})|([2-9]//d{3}))([-///])(0?2)([-///])(2[0-8]|1[0-9]|0?[1-9])$)|(^([2468][048]00)([-///])(0?2)([-///])(29)$)|(^([3579][26]00)([-///])(0?2)([-///])(29)$)|(^([1][89][0][48])([-///])(0?2)([-///])(29)$)|(^([2-9][0-9][0][48])([-///])(0?2)([-///])(29)$)|(^([1][89][2468][048])([-///])(0?2)([-///])(29)$)|(^([2-9][0-9][2468][048])([-///])(0?2)([-///])(29)$)|(^([1][89][13579][26])([-///])(0?2)([-///])(29)$)|(^([2-9][0-9][13579][26])([-///])(0?2)([-///])(29))|(((((0[13578])|([13578])|(1[02]))[//-/////s]?((0[1-9])|([1-9])|([1-2][0-9])|(3[01])))|((([469])|(11))[//-/////s]?((0[1-9])|([1-9])|([1-2][0-9])|(30)))|((02|2)[//-/////s]?((0[1-9])|([1-9])|([1-2][0-9]))))[//-/////s]?//d{4})(//s(((0[1-9])|([1-9])|(1[0-2]))//:([0-5][0-9])((//s)|(//:([0-5][0-9])//s))([AM|PM|am|pm]{2,2})))?$";                        break;                    case OptionItemType.Mobile:                        item.Pattern = @"^[0-9]{11}$";                        break;                    case OptionItemType.Telephone:                        item.Pattern = @"^(//(//d{3,4}//)|//d{3,4}-|//s)?//d{8}$";                        break;                    case OptionItemType.Fax:                        item.Pattern = @"^[+]{0,1}(//d){1,3}[ ]?([-]?((//d)|[ ]){1,12})+$";                        break;                    case OptionItemType.Regex:                        item.Pattern = item.Pattern.Replace(@"/", @"http://");                        break;                }                itemsCode.AppendFormat("bindValidation{0}('{1}',{{   tip:'{2}',pattern:'{3}',placeholder:'{4}',isRequired:{5} }})", uk, item.FormFiledName, item.Tip, item.Pattern, item.Placeholder, item.IsRequired ? "true" : "false");                itemsCode.AppendLine();            }            option.Script = string.Format(script, itemsCode.ToString(), uk);            script = null;            itemsCode.Clear();            option.PageKey = pageKey;            option.ItemList = itemList;            ValidationOptionList.Add(option);            return (option.Script);        }        /// <summary>        /// 后臺(tái)驗(yàn)證        /// </summary>        /// <param name="pageKey"></param>        /// <param name="errorMessage">json格式</param>        /// <returns></returns>        public static bool PostValidation(string pageKey, out string errorMessage)        {            bool isSuccess = true;            errorMessage = string.Empty;            if (!ValidationOptionList.Any(c => c.PageKey == pageKey))            {                throw new ArgumentNullException("ValidationSugar.PostValidation.pageKey");            }            var context = System.Web.HttpContext.Current;            var itemList = ValidationOptionList.Where(c => c.PageKey == pageKey).Single().ItemList;            var successItemList = itemList.Where(it => (it.IsRequired && !string.IsNullOrEmpty(context.Request[it.FormFiledName]) || !it.IsRequired)).Where(it =>            {                if (it.IsMultiselect == true)                {                    var errorList = context.Request[it.FormFiledName].Split(',').Where(itit =&
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 嵊泗县| 博罗县| 榆社县| 桂平市| 兴化市| 都昌县| 郁南县| 黄骅市| 伊金霍洛旗| 揭西县| 罗江县| 武安市| 虞城县| 昭觉县| 仪陇县| 三江| 怀安县| 凉城县| 宜章县| 邢台市| 汕尾市| 兴隆县| 虹口区| 新竹市| 乌拉特中旗| 通海县| 米易县| 大荔县| 中江县| 白银市| 海晏县| 灵宝市| 莱芜市| 突泉县| 大埔县| 鄂尔多斯市| 保亭| 漳浦县| 招远市| 霞浦县| 洛隆县|