博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【我的V日志】2010年1月29日星期五
阅读量:6630 次
发布时间:2019-06-25

本文共 2062 字,大约阅读时间需要 6 分钟。

2010129日星期五

琢磨了一下,从今天起,开始写日志了。毕竟我写这个类库(框架?)已经长达半年多了,修修订订,增增删删,整个过程我想写下自己的心得体会。

就像我写类库一样,我最初只是想写一个便于与数据库之间的交互访问,到今天扩展到七八十个类,坦白说,连我自己都没想到。我的想法很就简单,将来透过自己的日志,恍悟当时的代码含义。不得不说,随着类库的扩增中,我有点力不从心了。尤其是家里的生意忙,最近又要学习驾驶(笔试)。

这个月是值得纪念的一个月,首先是我踏入了20岁的门槛,踏出了学校的门槛,踏进了“驾驶培训”的门槛。3个踏,是否见证我已经是一个社会人士了?

哎,我这个有点罗嗦和无意的炫耀,各位看官权当娱乐一笑而过吧。

由于要学习驾驶,那长达2500的考题,令人不禁头晕目眩。简单说下今天的类库更新内容吧。

此次类库更新主要还是ASP.NET MVC方面,简单说,以往我(请注意,仅仅是我)在编写ASP.NET MVC应用程序时,对表单的验证总是这样的。

以最常见的注册Action为例:

       [AcceptVerbs(HttpVerbs.Post)]

        public ActionResult Register(string username, string password,string repassword)

        {

            if (!username.IsNull() && 3 < username.Length && username.Length < 20)

            {

                if (!password.IsNull() && 3 < password.Length && username.Length < 50)

                {

                    if (password == repassword)

                    {

                        // and so on ...

                    }

                    else

                    {

                        this.ModelState.AddModelError("repassword", "确认密码不匹配!");

                    }

                }

                else

                {

                    this.ModelState.AddModelError("password", "密码格式不正确!");

                }

            }

            else

            {

                this.ModelState.AddModelError("username", "用户名格式不正确!");

            }

            return View();

        }

可能这段代码有更高明的做法(不妨告诉我吧?^.^),但是我想,我的这种做法,当涉及到的参数多达N+1个的时候,我会被这么一串参数所“欺负”。

所以为了防止世界被破坏,为了守护世界的和平……

我决定让语法变成这样……

        [AcceptVerbs(HttpVerbs.Post)]

        public ActionResult Register(string id)

        {

            string username, password, repassword;

            var valiForm = this.CreateValiForm();

            if (valiForm.Validate(new MatchRange()

                {

                    Name = "username",

                    ErrorMessage = "用户名格式不正确!",

                    Minimum = 3,

                    Maximum = 20

                }, out username) &&

                valiForm.Validate(new MatchRange()

                {

                    Name = "password",

                    ErrorMessage = "密码格式不正确!",

                    Minimum = 3,

                    Maximum = 50

                }, out password) &&

                valiForm.Validate(new MatchCompare()

                {

                    Name = "repassword",

                    CompareName = "password",

                    ErrorMessage = "确认密码不匹配!",

                }, out repassword))

            {

                // and so on

            }

            return View();

    }

我不知道这样的代码,会不会给你带来“不好”的感觉。像是自己做的饭菜一样,觉得可口诱人,可能到别人的嘴里,什么焦味糊味才会被吃出来了。

最初在写这个验证的时候,我曾考虑在【OnActionExecuting】入手。例如:

        [AcceptVerbs(HttpVerbs.Post)]

        [MatchRange(Name = "username", ErrorMessage = "用户名格式不正确!", Minimum = 3, Maximum = 20)]

        public ActionResult Register(string id)

        {

        }

最终,我放弃了这个方案,原因是扩展性和控制性不好。

好了,开始去看那些驾驶考题了。如果你长得帅气逼人,请预祝我驾驶顺利通过吧!

转载于:https://www.cnblogs.com/sofire/archive/2010/01/29/1659459.html

你可能感兴趣的文章
JSON简述
查看>>
跨平台的WebRTC客户端框架:OpenWebRTC
查看>>
cvs的规范以及介绍(转)
查看>>
Makefile中用宏定义进行条件编译(gcc -D)/在Makefile中进行宏定义-D【转】
查看>>
linux ls 命令
查看>>
Win10 IoT C#开发 4 - UART 串口通信
查看>>
UWP入门(一) -- 先写几个简单控件简单熟悉下(别看这个)
查看>>
Spring+CXF整合来管理webservice(服务器启动发布webservice)
查看>>
【Android】如何获取本机号码、IMSI、EMSI
查看>>
【解决 macos Sierra 系统「安全性与隐私」设置中没有任何来源选项问题】
查看>>
树莓派:文本编辑器与文件
查看>>
Ubuntu网络配置
查看>>
Common Lisp支持中文编辑和编译的windows下环境搭建志
查看>>
Java开发工具IntelliJ IDEA使用教程:创建新的Andriod项目
查看>>
css续集1
查看>>
http协议中的header详解
查看>>
使用common-codec进行md5加密
查看>>
MaxCompute应用限制整理
查看>>
聊聊sentinel的SimpleHttpCommandCenter
查看>>
Linux学习笔记第二周第四次课(2月1日)
查看>>