首先,从底层开始即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. Ubuntu上识别不到安卓设备或者显示出“????”,提示No Permission

    一:Ubuntu上识别不到安卓设备 1.lsusb找到设备的Vendor ID 2.cd ~/.android 3.vim adb_usb.ini 4.把设备的VendorID添加进来,如设备ID为2 ...

  2. 2-10~2-11 配置iptables防火墙增强服务 selinux简单讲解

    学习一个服务的过程: 1.此服务器的概述:名字,功能,特点,端口号 2.安装 3.配置文件的位置 4.服务启动关闭脚本,查看端口 5.此服务的使用方法 6.修改配置文件,实战举例 7.排错(从下到上, ...

  3. 利用Bomb打造自己的小程序

    小程序开发 Bomb免费后端云开发 首先,小程序的开发已是热门,一个前段技术人员必备的技术就是开发小程序.在这里推荐一个入门小程序文章(连胜出品). 对于小程序的入门开发就不再做详细介绍,这里针对Bm ...

  4. 049——VUE中使用animation与transform实现vue的动画效果

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. 解决PCI Geomatica 无法卸载的问题

    之前安装过PCI Geomatica 2016,非正常卸载,应该有一定残留,但我已经尽可能将注册表中包含PCI.Geomatica.Geomatics等关键字的条目删除干净了. 在重新安装新版本201 ...

  6. Python 编程核心知识体系-函数(二)

    函数

  7. 在myeclipse中配置DB Driver(数据库用MySql),并在myeclipse执行sql语句操作

    在myeclipse中配置DB Driver(数据库用MySql),并在myeclipse执行sql语句操作 MyEclipse6.5    ,  mysq驱动jar包为mysql-connector ...

  8. 项目中一个Jenkins权限配置的过程

    需求:需要不同账号登录,只看到自己需要看到的job,比如: test01账号登录看到tes01t_job test02账号登录,只看到test02_job 分析:目的是不同项目,不希望看到其他项目或者 ...

  9. Yii用AJAX注册验证

    <script type="text/javascript"> $(document).ready(function(){ $('#RegisterForm_usern ...

  10. Bandicam下载 + 破解

    BANDICAM是一款屏幕游戏录制工具. 今天给大家详细介绍下它的下载和破解使用. 安装方法: 一.准备工作 1.官网下载最新版. https://www.bandicam.com/cn/ 2.下载注 ...