登陆页面



登陆页面的页面结构比较简单,没有写样式。

image标签的作用是用来显示验证码。



一般处理程序代码展示

using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Web;
using System.Web.SessionState; namespace EF_lainxi.BLL
{
/// <summary>
/// Handler1 的摘要说明
/// </summary>
public class Handler1 : IHttpHandler, IRequiresSessionState
{ public void ProcessRequest(HttpContext context)
{
//颜色的集合
Color[] colors = { Color.White };
Image img = new Bitmap(100, 30);
Graphics graphics = Graphics.FromImage(img);
Random random = new Random(DateTime.Now.Millisecond);
int charNum1 = random.Next(97, 122);
int charNum2 = random.Next(97, 122);
int charNum3 = random.Next(97, 122);
int charNum4 = random.Next(97, 122);
string validCode = string.Format($"{(char)charNum1}{(char)charNum2}{(char)charNum3}{(char)charNum4}");
context.Session["yzm"] = validCode;
Font font = new Font("宋体", 24);
Brush brush1 = new SolidBrush(colors[random.Next(0, colors.Length - 1)]);
graphics.DrawString(((char)charNum1).ToString(), font, brush1, 7, -3);
Brush brush2 = new SolidBrush(colors[random.Next(0, colors.Length - 1)]);
graphics.DrawString(((char)charNum2).ToString(), font, brush2, 26, -9);
Brush brush3 = new SolidBrush(colors[random.Next(0, colors.Length - 1)]);
graphics.DrawString(((char)charNum3).ToString(), font, brush3, 50, 0);
Brush brush4 = new SolidBrush(colors[random.Next(0, colors.Length - 1)]);
graphics.DrawString(((char)charNum4).ToString(), font, brush4, 70, -7);
context.Response.ContentType = "image/jpeg";
img.Save(context.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);
graphics.Dispose();
img.Dispose();
} public bool IsReusable
{
get
{
return false;
}
}
}
}

一般处理程序中用来创建一个验证码的图片显示到页面的image里。

页面成品展示



登陆页面代码展示

using EF_lainxi.DAL;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls; namespace EF_lainxi
{
public partial class DeptDetail : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{ } protected void Button1_Click(object sender, EventArgs e)
{
string yzm= Session["yzm"].ToString();
if (yzm==TextBox3.Text)
{
if (TextBox1.Text!=null&&TextBox1.Text!=""&&TextBox2.Text!=null&&TextBox2.Text!="")
{
//数据库的名字
using (Model2 db=new Model2())
{
var name = db.Users.FirstOrDefault(s => s.Name == TextBox1.Text);
if (name.Pwd==TextBox2.Text)
{
//跳转到显示界面
Response.Redirect("xians.aspx");
}
else
{
string strUrl = "<script>alert('账号或密码错误');</script>";
Response.Write(strUrl);
}
} }
else
{
string strUrl = "<script>alert('账号或密码不能为空');</script>";
Response.Write(strUrl);
}
}
else
{
string strUrl = "<script>alert('验证码不正确');</script>";
Response.Write(strUrl);
}
}
}
}

主要作用是进行了验证码的判断、账号密码的正确与否,成功跳转显示界面,错误进行提示。

显示页面页面代码

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="xians.aspx.cs" Inherits="EF_lainxi.xians" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.4.1/dist/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous"> </head>
<body>
<form id="form1" runat="server">
<div>
<div>
图书名称: <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox><asp:Button ID="Button1" runat="server" Text="查询" CssClass="btn btn-link" OnClick="Button1_Click" /></div>
<div>
<table class="table">
<thead>
<tr>
<th scope="col">图书编号</th>
<th scope="col">图书名称</th>
<th scope="col">图书价格</th>
<th scope="col">作者</th>
<th scope="col">类型</th>
<th scope="col">图片</th>
<th scope="col">上架时间</th>
<th scope="col">操作</th>
</tr>
</thead>
<asp:Repeater ID="Repeater1" runat="server" OnItemCommand="Repeater1_ItemCommand">
<ItemTemplate>
<tbody>
<tr>
<th scope="row"><%# Eval("BookId") %></th>
<td><%# Eval("BookName") %></td>
<td><%# Eval("Price") %></td>
<td><%# Eval("BookAuthor") %></td>
<td><%# Eval("TypeId.TyoeName") %></td>
<td>
<asp:Image ID="Image1" runat="server" ImageUrl='<%# "~/images/"+ Eval("Img") %>' Width="60" Height="60" /></td>
<td><%# Eval("Addtime") %></td>
<td>
<asp:LinkButton ID="LinkButton1" runat="server" CommandArgument='<%# Eval("BookId") %>' CommandName="delete" OnClientClick="return confirm('确定删除吗?')">删除</asp:LinkButton>
<asp:LinkButton ID="LinkButton2" runat="server" CommandArgument='<%# Eval("BookId") %>' CommandName="xainq">详情</asp:LinkButton> </td>
</tr>
</tbody>
</ItemTemplate>
</asp:Repeater>
</table>
</div>
</div> </form>
<script src="https://cdn.jsdelivr.net/npm/jquery@3.4.1/dist/jquery.slim.min.js" integrity="sha384-J6qa4849blE2+poT4WnyKhv5vZF5SrPo0iEjwBvKU7imGFAV0wwj1yYfoRSJoZ+n" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous"></script> </body>
</html>

显示页面后台代码

using EF_lainxi.DAL;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls; namespace EF_lainxi
{
public partial class xians : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
select();
}
} private void select()
{
using (Model2 db = new Model2())
{
var list = db.BookInfos.ToList();
Repeater1.DataSource = list;
Repeater1.DataBind();
}
} protected void Repeater1_ItemCommand(object source, RepeaterCommandEventArgs e)
{
string pand= e.CommandName;
int id = Convert.ToInt32(e.CommandArgument);
if (pand== "delete")
{
using (Model2 db = new Model2())
{
var sc= db.BookInfos.FirstOrDefault(s => s.BookId == id);
db.BookInfos.Remove(sc);
db.SaveChanges();
select();
}
} } protected void Button1_Click(object sender, EventArgs e)
{
using (Model2 db = new Model2())
{
Repeater1.DataSource = db.BookInfos.Where(p => p.BookName.Contains(TextBox1.Text)).ToList();
Repeater1.DataBind();
}
}
}
}

登陆页面成品展示



注册页面代码



注册页面后台

using EF_lainxi.DAL;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls; namespace EF_lainxi
{
public partial class DeptDetail : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{ } protected void Button1_Click(object sender, EventArgs e)
{
string yzm= Session["yzm"].ToString();
if (yzm==TextBox3.Text)
{
if (TextBox1.Text!=null&&TextBox1.Text!=""&&TextBox2.Text!=null&&TextBox2.Text!="")
{
using (Model2 db=new Model2())
{
var name = db.Users.FirstOrDefault(s => s.Name == TextBox1.Text);
if (name.Pwd==TextBox2.Text)
{
Response.Redirect("xians.aspx");
}
else
{
string strUrl = "<script>alert('账号或密码错误');</script>";
Response.Write(strUrl);
}
} }
else
{
string strUrl = "<script>alert('账号或密码不能为空');</script>";
Response.Write(strUrl);
}
}
else
{
string strUrl = "<script>alert('验证码不正确');</script>";
Response.Write(strUrl);
}
} protected void Button2_Click(object sender, EventArgs e)
{
Response.Redirect("tianjia.aspx");
}
}
}

成功后跳转到登陆页面

Entity FrameWork操作数据库完成登陆、列表显示+验证码的更多相关文章

  1. Linq实战 之 Linq to Sql及Entity Framework操作详解

    Linq实战 之 Linq to Sql及Entity Framework操作详解 一:linq to db的框架 1. linq to sql 2. linq to ado.net entity f ...

  2. 用Entity Framework往数据库插数据时,出现异常,怎么查看异常的详细信息呢?

    做项目时,在用Entity Framework往数据库插数据时,程序报异常,但是通过报的异常死活没法查看异常的详细信息.这让人很是烦恼.本着自己动手丰衣足食的原则,通过查看资料终于找到了显示异常详细信 ...

  3. entity framework 删除数据库出现错误的解决方法--最土但是很有效的方法

    无法删除数据库,因为该数据库当前正在使用. public ChinaerContext() : base("name=ContextConn") { // Database.Set ...

  4. ASP.NET MVC+Entity Framework 访问数据库

    Entity Framework 4.1支持代码优先(code first)编程模式:即可以先创建模型类,然后通过配置在EF4.1下动态生成数据库. 下面演示两种情形: 1.代码优先模式下,asp.n ...

  5. Entity FrameWork初始化数据库的四种策略

    程序猿就是苦逼,每天还得分出一些时间去写博文.天真的很热,今天就随便写一点啦! 1.EF初始化数据库的四中策略 EF可以根据项目中的模型自动创建数据库.下面我们就分类看看Entity Framewor ...

  6. EF ( Entity Framework) 操作ArcCataLog 生成的(Sql Server)空间数据库

    因为项目需求,现在需要利用EF 操作由Arccatalog生成的sql server空间数据库..在此之前,一直没有接触过空间数据库,在操作空间数据库时 绕了许多弯... 因此写一篇随笔做一个总结. ...

  7. Entity FrameWork 操作使用详情

    Entity FrameWork 是以ADO.net为基础发展的ORM解决方案. 一.安装Entity FrameWork框架 二.添加ADO.Net实体数据模型 三.EF插入数据 using Sys ...

  8. Entity framework Core 数据库迁移

    本文转自https://www.cnblogs.com/zmaiwxl/p/9454177.html 初始化数据库 1.添加初始迁移 Add-Migration init 向“迁移”目录下的项目添加以 ...

  9. VS2010 中 Entity Framework 多数据库并存方法

    选中相应数据库生成的 *.edmx文件,然后在属性中找到“自定义工具命名空间”,为每个EF数据集设置不同的命名空间,这样每个数据库生成的代码就会被隔离在不同的命名空间,即使同名类型也就不会相互影响了.

随机推荐

  1. 201771010113 李婷华 《面向对象程序设计(Java)》第十一周总结

    一.理论知识部分 第九章  集合 1.数据结构介绍: 线性结构:线性表,栈,队列,串,数组,文件.非线性结构:树,图. 散列表:又称为哈希表. 散列表算法的基本思想是:以结点的关键字为自变量,通过一定 ...

  2. RHCSA 第一题 修改root密码

    题目要求 请修改系统的root帐号密码为redhat,确保能够使用root帐号登录系统.说明:server0 的IP为172.25.0.11/24desktop0的IP为172.25.0.10/24 ...

  3. @Resource、@Autowired等几个注解的区别

    1.@Resource注解和@Autowired的区别 @Autowired注解:是按类型装配依赖对象,默认情况下它要求依赖对象必须存在,如果允许null值,可以设置它required属性为false ...

  4. Codeforces 909E(Coprocessor,双队列维护)

    题意:给出n个待处理的事件(0 ~n-1),再给出了n个标(0表示只能在主处理器中处理这个事件,1表示只能在副处理器中处理这个事件),处理器每次能处理多个任务.每个事件有关联,如果一个任务要在副处理器 ...

  5. 这么简单的ES索引生命周期管理,不了解一下吗~

    对于日志或指标(metric)类时序性强的ES索引,因为数据量大,并且写入和查询大多都是近期时间内的数据.我们可以采用hot-warm-cold架构将索引数据切分成hot/warm/cold的索引.h ...

  6. Spring MVC 函数式编程进阶

    1. 前言 上一篇对 Spring MVC 的函数式接口编程进行了简单入门,让很多不知道的同学见识了这种新操作.也有反应这种看起来没有传统写法顺眼,其实大家都一样.但是我们还是要敢于尝试新事物.Jav ...

  7. ArrayList详解-源码分析

    ArrayList详解-源码分析 1. 概述 在平时的开发中,用到最多的集合应该就是ArrayList了,本篇文章将结合源代码来学习ArrayList. ArrayList是基于数组实现的集合列表 支 ...

  8. 通俗易懂描述dubbo工作原理

    关于dubbo的描述就不再赘述,直接进入主题,那就是dubbo的工作原理.dubbo分为服务提供者和服务消费者,主要的工作内容有以下几点:提供者暴露服务.消费者引入服务.提供者和消费者和注册中心之间的 ...

  9. SVN:TortoiseSVN SendRpt.exe not found 完美解决

    今天来上班的时候,发现公司用的svn版本和我自己的不一致,其实可以使用但是还是神经质的更新了一下.结果每次右键都会出一个异常.下图所示. 期初以为是哪里配置错误,或者版本冲突,经过网上查找办法,完美解 ...

  10. 英语四六级模拟考试系统APP

    Android studio开发的.eclipse的SSM框架作为服务器后台.Mysql5.6. 我先上几张图吧. 需要源码可以留言给我.另外本人接外包或者有问题也可以问我.留言,我会看的.