• 【我的V日志】2010年1月29日星期五


    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)

            {

            }

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

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

  • 相关阅读:
    14_java之变量|参数|返回值|修饰符
    NYOJ 202 红黑树 (二叉树)
    NYOJ 138 找球号(二) (哈希)
    NYOJ 136 等式 (哈希)
    NYOJ 133 子序列 (离散化)
    NYOJ 129 树的判定 (并查集)
    NYOJ 117 求逆序数 (树状数组)
    NYOJ 93 汉诺塔 (数学)
    HDU 2050 折线分割平面 (数学)
    天梯赛L2-008 最长对称子串 (字符串处理)
  • 原文地址:https://www.cnblogs.com/sofire/p/1659459.html
Copyright © 2020-2023  润新知