首先,从底层开始即Models:

(1)通用数据访问类(封装数据访问类方法):SqlHelper类

使用命名空间:using System.Data;

using System.Data.SqlClient;

using System.Configuration;//使用配置文件Web.config所需的命名空间

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Configuration;
using System.Data;
using System.Data.SqlClient; namespace mvcDemo.Models
{
/// <summary>
/// (1)通用访问类(封装数据访问类方法)
/// </summary>
public class SqlHelper
{
//定义链接字符串 private static string connString = ConfigurationManager.ConnectionStrings["connString"].ToString();//使用配置文件 public static SqlDataReader GetReader(string sql)
{
SqlConnection con = new SqlConnection(connString); SqlCommand com = new SqlCommand(sql, con);
try
{
con.Open();
return com.ExecuteReader(CommandBehavior.CloseConnection);//dataReader关闭后自动关闭
}
catch (Exception ex)
{
//写出错误日志 throw ex;
} }
}
}

web.config:配置为

<connectionStrings>
    <add name="connString" connectionString="Server=.;DataBase=DBFirst;uid=sa;pwd=123456"/>//数据库连接字符串
  </connectionStrings>

(2)数据访问类:实体名称+Service,需使用命名空间:

using System.Data;
  using System.Data.SqlClient;

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data;
using System.Data.SqlClient; namespace mvcDemo.Models
{
/// <summary>
///(2) 数据访问类
/// </summary>
public class sysAdminService
{/// <summary>
/// 根据账号和密码登录
/// </summary>
/// <param name="objAdmin"></param>
/// <returns></returns>
public sysAdmin AdminLogin(sysAdmin objAdmin)//返回对象思考??及对参数为实体的思考??
{
string sql = "select LoginName from First where LoginId={0}and LoginPwd='{1}'";
sql = string.Format(sql,objAdmin.LoginId,objAdmin.Loginpwd);//格式化 SqlDataReader objReader = SqlHelper.GetReader(sql);
if (objReader.Read())
{
objAdmin.LoginName = objReader["LoginName"].ToString();
}
else
{
objAdmin = null;
}
objReader.Close();
return objAdmin; }
}
}

(3)实体类

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web; namespace mvcDemo.Models
{
/// <summary>
/// 实体类
/// </summary>
public class sysAdmin
{
public int LoginId { get; set; }
public string LoginName { get; set; }
public string Loginpwd { get; set; }
}
}

其次,Views()【视图层】使用form提交

@{
Layout = null;
} <!DOCTYPE html> <html>
<head>
<meta name="viewport" content="width=device-width" />
<title>登录</title>
</head>
<body>
<form method="post" action="/sysAdmin/AdminLogin">
用户名:<input type="text" name="LoginId" />
<br /><br />
密码:<input type="password" name="Loginpwd"/>
<br /><br />
<input type="submit" value="登录" /><br />
<span style="color:red">@ViewData["info"]</span>
</form>
</body>
</html>

最后,Controller(控制器)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using mvcDemo.Models; namespace mvcDemo.Controllers
{
public class sysAdminController : Controller
{
public ActionResult Index()//呈现视图
{
return View();
}
//编写动作方法
public ActionResult AdminLogin()
{
//[1] 获取数据
int loginId = Convert.ToInt32(Request.Params["LoginId"]);
string loginpwd = Request.Params["Loginpwd"];//接受form提交的数据
sysAdmin objAdmin = new sysAdmin()
{
LoginId = loginId,
Loginpwd = loginpwd
};//对象初始化器(对属性赋值)
//[2] 业务处理 掉用数据访问类 使用数据访问类中的方法
objAdmin = new sysAdminService().AdminLogin(objAdmin);
if (objAdmin!=null)
{
ViewData["info"] = "欢迎登录!"+objAdmin.LoginName;
}
else
{
ViewData["info"] = "用户名或密码错误";
}
//[3] 返回数据(视图)
return View("Index");
}
}
}

注意:数据库的创建,若没有则报错

使用MVC实现登录功能的更多相关文章

  1. 一步步开发自己的博客 .NET版(3、注册登录功能)

    前言 这次开发的博客主要功能或特点:    第一:可以兼容各终端,特别是手机端.    第二:到时会用到大量html5,炫啊.    第三:导入博客园的精华文章,并做分类.(不要封我)    第四:做 ...

  2. Struts2整合Hibernate3实现用户登录功能

    所用技术:struts2 ,hibernate,jsp,mysql 本DEMO仅仅实现用户登录功能,采用MVC思想,自己也觉得相对是比较简单,比较容易理解数据流向的一个例子,通过整合这个过程,能够清晰 ...

  3. 网站集成QQ登录功能

    最近在做一个项目时,客户要求网站能够集成QQ登录的功能,以前没做过这方面的开发,于是去QQ的开放平台官网研究了一下相关资料,经过自己的艰苦探索,终于实现了集成QQ登录的功能,现在把相关的开发经验总结一 ...

  4. 使用Struts1完成用户登录功能

    1.Struts框架 框架(framework):就是一系列代码和开发模式的整合,使用框架后,所有开发人员都会按照框架提供的规范进行开发,使代码更容易维护和扩展. 使用框架的优点: 1)   易于维护 ...

  5. 网站集成QQ登录功能(转)

    最近在做一个项目时,客户要求网站能够集成QQ登录的功能,以前没做过这方面的开发,于是去QQ的开放平台官网研究了一下相关资料,经过自己的艰苦探索,终于实现了集成QQ登录的功能,现在把相关的开发经验总结一 ...

  6. MVC - 单点登录中间件

    本章将要和大家分享的是一个单点登录中间件,中间件听起来高深其实这里只是吧单点登录要用到的逻辑和处理流程封装成了几个方法而已,默认支持采用redis服务保存session的方式,也可以使用参数Func& ...

  7. 8、ABPZero系列教程之拼多多卖家工具 添加手机注册登录功能

    现在网站基本都用手机注册,很少用邮箱注册,本篇内容比较多,代码我会尽量加备注,有些操作需要连续添加几个文件才不报错,如果VS显示错误,请继续后续步骤. 前面已经有一篇文章讲到集成短信发送模块:http ...

  8. MVC会员注销功能Cookie的应用

    我们实现了<MVC应用程序实现会员登录功能>http://www.cnblogs.com/insus/p/3466512.html 有登录就会有注销功能.此次Insus.NET练习一个MV ...

  9. 使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(二)——使用蓝图功能进行模块化

    使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(一)——创建应用 使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(二)——使用蓝图功能进行模块化 使用 Flask 框架写用 ...

随机推荐

  1. 雷林鹏分享:Ruby 文件的输入与输出

    Ruby 文件的输入与输出 Ruby 提供了一整套 I/O 相关的方法,在内核(Kernel)模块中实现.所有的 I/O 方法派生自 IO 类. 类 IO 提供了所有基础的方法,比如 read. wr ...

  2. .Net Core中使用UEditor

    一.下载解压UEditor的.net版本(这个直接使用的话是asp.net的版本) 我下载的是这个 再给留上地址http://ueditor.baidu.com/website/download.ht ...

  3. vue 子组件传递数据跟父组件

    子组件 <body> <div v-on:click="test"></div> <script> export default { ...

  4. Python数据类型-01.数字和布尔值

    本节主要介绍Python中的基础知识中的数据类型,数字和布尔值 介绍几个知识点:1)内置函数print()的用法,直接打印括号里面的内容,或者print后跟多个输出,以逗号分隔.2)内置函数type( ...

  5. # 20155327 2016-2017-4 《Java程序设计》第8周学习总结

    20155327 2016-2017-4 <Java程序设计>第7周学习总结 教材学习内容总结 了解NIO NIO使用频道(Channel)来衔接数据节点,在处理数据时,NIO可以让你设定 ...

  6. 《DSP using MATLAB》 Problem 2.3

    本题主要是显示周期序列的. 1.代码: %% ------------------------------------------------------------------------ %% O ...

  7. ssh框架中spring整合hibernate的配置文件模板(带详细注释)

    applicationContext.xml的配置文件模板 <?xml version="1.0" encoding="UTF-8"?> <b ...

  8. minio 集群搭建

      具体实际的取舍可以参考官方文档,我使用的是4 node 4 driver 模式 环境机器说明 192.168.31.2 192.168.31.3 192.168.31.4 192.168.31.5 ...

  9. linux之 multipath 多路径

    一.什么是多路径 普通的电脑主机都是一个硬盘挂接到一个总线上,这里是一对一的关系.而到了有光纤组成的SAN环境,或者由iSCSI组成的IPSAN环境,由于主机和存储通过了光纤交换机或者多块网卡及IP来 ...

  10. Java多线程编程核心技术,第六章

    1,饿汉模式/单例模式,一开始就新建一个静态变量,后面用getInstance()都是同一个变量 2,懒汉模式/单例模式,在getInstance()才会new一个对象,在第一个有了后不会继续创建 3 ...