zoukankan      html  css  js  c++  java
  • 简洁的MVC思想框架——Nancy(Post操作与外部引用css和JS)

    之前介绍了关于Nancy配置与Get基础操作,以下来介绍有关Nancy的Post操作。

    第一步,设计主界面,以登录界面为例:Login.cshtml

    路径为:

    设计好页面后,在之前的modules类中设定指向路径和相关post操作,如下图所示:

    <body>
        <div id="login">
            <form action="/Home" method="post" id="form1">
                <div id="bigimg">
                    <img src="images/bigimg.jpg" />
                </div>
                <div id="loginbox">
                    <div id="title-login">登录</div>
                    <a id="title-register" href="#">注册账号 ></a>
                    <div id="forinput">
                        帐号:<br>
                        <p>
                            <input id="user" name="userId" tabindex="1" type="text">
                            <span id="error_userId"></span>
                        </p>密码:
                        <a href="#" style="color: #00A1D6; float: right; *margin-top: -10px; display: block;">  忘记了密码?  </a>
                        <br>
                        <p>
                            <input id="password" type="password" tabindex="2" name="userPwd">
                            <span id="error_userPwd"></span>
                        </p>
                        验证码:
                        <br>
                        <p>
                            <input id="code" name="verifity" tabindex="3" type="text">
                            <span>
                                <img id="Verifity"  onclick="src = '/CreateCode?'+Math.random()" src="/CreateCode" style="vertical-align: middle;">
                            </span>
                            <span id="error_code" style="margin-left: 18px;"></span>
                        </p>
                    </div>
                        <input type="submit" id="submit" value="登 录" onclick="return checkLogin()">
                </div>
            </form>
            </div>
    </body>
    View Code
     1 #region 登录——表单验证,成功跳转至主页面
     2 
     3             Post["/Home"] = p =>
     4             {
     5                 //获取表单
     6                 var user = SqlHelperServer.ToDBValue(Request.Form);
     7                 //验证用户名是否存在
     8                 if (!userService.isUserId(user.userId))
     9                 {
    10                     return "<script>alert('用户名不存在!');location.href='/'</script>";
    11                 }
    12                 //验证密码输入是否正确
    13                 if (userService.GetUserPwd(user.userId) != user.userPwd)
    14                 {
    15                     return "<script>alert('密码错误!');location.href='/'</script>";
    16                 }
    17                 if (user.verifity != Session["Code"].ToString())
    18                 {
    19                     return "<script>alert('验证码错误!');location.href='/'</script>";
    20                 }
    21                 ViewBag.UserId = user.userId;
    22                 DataTable dt = userService.GetUser();
    23                 return View["User/Home.cshtml", dt.Rows];
    24             };
    25 
    26             #endregion
    View Code

    其中关于Sqlhelperserver是有关数据库操作公共类,其中ToDBvalue是获取页面传入所有html的表单数据,其中标签必须有“name”属性。

    public static object ToDBValue(this object value)
            {
                return value == null ? DBNull.Value : value;
            }
    View Code

    至此,Post操作完成!

    其中还涉及到有关引用外部JS和外部css的文件,这根普通的MVC不一样,也经过相当长的研究才摸索出来,最后发现很简单,只要在modules新建一个类,如下:

    public class Bootstrapper : DefaultNancyBootstrapper
        {
           
            protected override void ConfigureConventions(NancyConventions nancyConventions)
            {
                base.ConfigureConventions(nancyConventions);
                nancyConventions.StaticContentsConventions.Clear();
                nancyConventions.StaticContentsConventions.Add
                (StaticContentConventionBuilder.AddDirectory("css", "/css"));
                nancyConventions.StaticContentsConventions.Add
                (StaticContentConventionBuilder.AddDirectory("js", "/script"));
                nancyConventions.StaticContentsConventions.Add
                (StaticContentConventionBuilder.AddDirectory("images", "/images"));
            }
    }
    View Code

    在之后还会讲解关于验证码的获取与Session的相关操作,至于其他跟MVC类似,无多大变动。

    真正的谦卑是对真理持续不断的追求。
  • 相关阅读:
    快速幂和矩阵快速幂-模板
    gcd-模板+最小公倍数
    manacher-模板-hd-3068
    kmp-模板-hd-1711
    链式前向星-邻接表--模板
    poj-3096-Suprising Strings
    hihocoder-1615-矩阵游戏II
    hihocoder-Week174-Dice Possibility
    论文-Swish: A self-gated Active Function
    hihocoder-1595-Numbers
  • 原文地址:https://www.cnblogs.com/huanghzm/p/4091105.html
Copyright © 2011-2022 走看看