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

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

路径为:

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

<body>
<div id="login">
<form action="/Home" method="post" id="form1">
<div id="bigimg">
<img src="data: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>
 #region 登录——表单验证,成功跳转至主页面

             Post["/Home"] = p =>
{
//获取表单
var user = SqlHelperServer.ToDBValue(Request.Form);
//验证用户名是否存在
if (!userService.isUserId(user.userId))
{
return "<script>alert('用户名不存在!');location.href='/'</script>";
}
//验证密码输入是否正确
if (userService.GetUserPwd(user.userId) != user.userPwd)
{
return "<script>alert('密码错误!');location.href='/'</script>";
}
if (user.verifity != Session["Code"].ToString())
{
return "<script>alert('验证码错误!');location.href='/'</script>";
}
ViewBag.UserId = user.userId;
DataTable dt = userService.GetUser();
return View["User/Home.cshtml", dt.Rows];
}; #endregion

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

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

至此,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"));
}
}

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

简洁的MVC思想框架——Nancy(Post操作与外部引用css和JS)的更多相关文章

  1. 简洁的MVC思想框架——Nancy(环境配置与Get操作)

    Nancy官网——https://github.com/NancyFx/Nancy 概述:Nancy是一个开源的Web轻型框架内核符合MVC思想,有开发方便,路由简单的特点,而且功能齐全 起步:Hel ...

  2. 简洁的MVC思想框架——Nancy(Session的使用)

    前文提到关于Nancy中GET和POST以及外部引用图片,css和JS的文件等操作.今天所讲的是Nancy关于Session相关操作. Session作为web开发中极其重要的一部分,而Nancy中S ...

  3. php ci框架中载入css和js文件失败的原因及解决方法

    在将html页面整合到ci框架里面的时候,载入css和js失败. 原因是ci框架是入口的框架 对框架中文件的全部请求都须要经过index.php处理完毕,当载入外部的css和js文件的时候要使 用ba ...

  4. 新作《ASP.NET MVC 5框架揭秘》正式出版

    ASP.NET MVC是一个建立在ASP.NET平台上基于MVC模式的Web开发框架,它提供了一种与Web Form完全不同的开发方式.ASP.NET Web Form借鉴了Windows Form基 ...

  5. Spring MVC + jpa框架搭建,及全面分析

    一,hibernate与jpa的关系 首先明确一点jpa是什么?以前我就搞不清楚jpa和hibernate的关系. 1,JPA(Java Persistence API)是Sun官方提出的Java持久 ...

  6. ASP.NET MVC+EF框架+EasyUI实现权限管理系列(7)-DBSession的封装

    原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(7)-DBSession的封装 ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇)   (1):框架搭建    ...

  7. ASP.NET MVC+EF框架+EasyUI实现权限管理系列(6)- EF上下文实例管理

    原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(6)- EF上下文实例管理 ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇)   (1):框架搭建    ( ...

  8. ASP.NET MVC+EF框架+EasyUI实现权限管理系列(4)-业务逻辑层的封装

    原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(4)-业务逻辑层的封装 ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇)   (1):框架搭建    (2) ...

  9. ASP.NET MVC+EF框架+EasyUI实现权限管理系列(3)-面向接口的编程

    原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(3)-面向接口的编程 ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇)  (1)框架搭建    (2):数据 ...

随机推荐

  1. mac 调整Launchpad行列数目

    Mac调整Launchpad  行数和列数 开打Terminal终端依次输入以下三句: <1> 改变行数:defaults write com.apple.dock springboard ...

  2. c/c++连接mysql数据库设置及乱码问题(vs2013连接mysql数据库,使用Mysql API操作数据库)

    我的安装环境: (1)vs2013(32位版) (vs2013只有32位的 没有64位的,但是它可以编译出64位的程序)  : (2)mysql-5.7.15(64位) vs2013中的设置(按步骤来 ...

  3. 全文检索lucene6.1的检索方式

    背景: 工作任务完成后,闲暇之计给自己充充电! Lucene是一个纯java全文检索工具包,采用倒排索引原理. 全文检索:指的是计算机索引程序通过扫描文章的每一个词,对每一个词建立一个索引,并指明该词 ...

  4. JavaScript学习笔记(第二天)

    数组 为什么要学习数组 之前学习的数据类型,只能存储一个值(比如:Number/String.我们想存储班级中所有学生的姓名,此时该如何存储? 数组的概念 所谓数组,就是将多个元素(通常是同一类型)按 ...

  5. maven 测试写入JRE参数

    项目在测试时碰到一个问题,就是JVM加载参数的问题. web项目本身在注入配置信息的时候,读取的是本地的配置文件,但是配置文件的位置是卸载tomcat 里面配置的JAVA_OPTS里面的. 问题出现了 ...

  6. 洛谷 P3079 [USACO13MAR]农场的画Farm Painting

    P3079 [USACO13MAR]农场的画Farm Painting 题目描述 After several harsh winters, Farmer John has decided it is ...

  7. error: could not install *smartsocket* listener: Address already in use 下午8:49 ADB server didn't ACK 下午8:49 * failed to start daemon * 下午8:49 error: cannot connect to daemon

    在终端输入adb命令,出错如下: localhost:work zhangyg$ adb devices List of devices attached adb server version (32 ...

  8. lucene构建restful风格的简单搜索引擎服务

    来自于本人博客: lucene构建restful风格的简单搜索引擎服务 本人的博客如今也要改成使用lucene进行全文检索的功能,因此在这里把代码贴出来与大家分享 一,文件夹结构: 二,配置文件: 总 ...

  9. Android多媒体学习六:利用Service实现背景音乐的播放

    Android同意我们使用Service组件来完毕后台任务.这些任务的同意不会影响到用户其它的交互. 1.Activity类 [java] view plaincopy package demo.ca ...

  10. Picking up Jewels

    Picking up Jewels There is a maze that has one entrance and one exit.  Jewels are placed in passages ...