先用linq连接数据 然后建个类写几个方法 如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
/// <summary>
/// DA 的摘要说明
/// </summary>
public class DA
{
private MyDBDataContext Context;
public DA()
{
Context = new MyDBDataContext();
}
public void Insert(zhuce data)
{
Context.zhuce.InsertOnSubmit(data);
Context.SubmitChanges();
}
public bool SelectBy(string id)
{
List<zhuce> list = Context.zhuce.Where(p => p.Id == id).ToList();
if (list.Count() > 0)
{
return true;
}
return false;
}
public List<ChinaStates> Select(string code)
{
return Context.ChinaStates.Where(p => p.ParentAreaCode == code).ToList();
}
}
注册页面aspx代码:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!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>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Label ID="Label1" runat="server" Text="代号:"></asp:Label>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:Button ID="Button2" runat="server" OnClick="Button2_Click" Text="唯一验证" />
<br />
<asp:Label ID="Label2" runat="server" Text="用户名:"></asp:Label>
<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
<br />
<asp:Label ID="Label3" runat="server" Text="密码:"></asp:Label>
<asp:TextBox ID="TextBox3" runat="server"></asp:TextBox>
<br />
<asp:Label ID="Label4" runat="server" Text="确认密码:"></asp:Label>
<asp:TextBox ID="TextBox4" runat="server"></asp:TextBox>
<br />
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<br />
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
省:<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True" OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged">
</asp:DropDownList>
市:<asp:DropDownList ID="DropDownList2" runat="server" AutoPostBack="True" OnSelectedIndexChanged="DropDownList2_SelectedIndexChanged" >
</asp:DropDownList>
区:<asp:DropDownList ID="DropDownList3" runat="server">
</asp:DropDownList>
</ContentTemplate>
</asp:UpdatePanel>
</div>
<asp:Label ID="Label5" runat="server" Text="验证码:"></asp:Label>
<asp:TextBox ID="TextBox5" runat="server"></asp:TextBox>
<asp:ImageButton ID="ImageButton1" runat="server" ImageUrl="Handler.ashx" OnClick="ImageButton1_Click" />
<br />
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="注册" />
</form>
</body>
</html>
注册页面aspx.cs代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
BIndDropDown1();
}
}
protected void Button2_Click(object sender, EventArgs e)//唯一验证
{
if (string.IsNullOrWhiteSpace(TextBox1.Text))
{
Response.Write("<script>alert('用户ID不能为空!!')</script>");
}
else
{
bool isok = new DA().SelectBy(TextBox1.Text);
if (isok)
{
Response.Write("<script>alert('此ID不可用')</script>");
}
else
{
Response.Write("<script>alert('此ID可用')</script>");
}
}
}
protected void Button1_Click(object sender, EventArgs e)
{
string id = TextBox1.Text;
string uid = TextBox2.Text;
string pwd = TextBox3.Text;
string rpwd = TextBox4.Text;
string adrs = DropDownList1.SelectedItem.Text + DropDownList2.SelectedItem.Text + DropDownList3.SelectedItem.Text;
if (id == "")
{
Response.Write("<script>alert('用户ID不能为空!!')</script>");
}
else if (uid == "")
{
Response.Write("<script>alert('用户名不能为空!!')</script>");
}
else if (pwd == "")
{
Response.Write("<script>alert('用户密码不能为空!!')</script>");
}
else if (rpwd != pwd)
{
Response.Write("<script>alert('密码不一致!!')</script>");
}
else if (adrs=="")
{
Response.Write("<script>alert('请选择地址!!')</script>");
}
else
{
zhuce data = new zhuce();
data.Id = id;
data.Uid = uid;
data.Pwd = pwd;
data.Adrs = adrs;
string ss = Session["yanzheng"].ToString();
if (TextBox5.Text==ss)
{
new DA().Insert(data);
//Session["uid"] = TextBox2.Text;//Sesson传值
//Response.Redirect("Default2.aspx");
Response.Redirect("Default3.aspx?uid="+TextBox2.Text+ "&pwd="+TextBox3.Text);
}
else
{
Response.Write("<script>alert('注册失败!!')</script>");
}
}
}
//-------------------------------------------俩种方法选择其一
//public void BIndDropDown()
//{
// List<ChinaStates> list = new ChinaDA().Select("0001");
// foreach (ChinaStates data in list)
// {
// ListItem lt = new ListItem(data.AreaName, data.AreaCode);
// DropDownList1.Items.Add(lt);
// }
//}
public void BIndDropDown1()
{
List<ChinaStates> list = new DA().Select("0001");
DropDownList1.DataSource = list;
DropDownList1.DataTextField = "AreaName";
DropDownList1.DataValueField = "AreaCode";
DropDownList1.DataBind();
}
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
string city = DropDownList1.SelectedItem.Value;
List<ChinaStates> list = new DA().Select(city);
DropDownList2.DataSource = list;
DropDownList2.DataTextField = "AreaName";
DropDownList2.DataValueField = "AreaCode";
DropDownList2.DataBind();
string qu = DropDownList2.SelectedItem.Value;
List<ChinaStates> list1 = new DA().Select(qu);
DropDownList3.DataSource = list1;
DropDownList3.DataTextField = "AreaName";
DropDownList3.DataValueField = "AreaCode";
DropDownList3.DataBind();
}
protected void DropDownList2_SelectedIndexChanged(object sender, EventArgs e)
{
string qu = DropDownList2.SelectedItem.Value;
List<ChinaStates> list1 = new DA().Select(qu);
DropDownList3.DataSource = list1;
DropDownList3.DataTextField = "AreaName";
DropDownList3.DataValueField = "AreaCode";
DropDownList3.DataBind();
}
protected void ImageButton1_Click(object sender, ImageClickEventArgs e)
{
ImageButton1.ImageUrl = "Handler.ashx?id=" + new Random().Next(100);
}
}
利用Session传值的页面aspx代码:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" %>
<!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>
</head>
<body>
<form id="form1" runat="server">
<div>
欢迎
<asp:Literal ID="Literal1" runat="server"></asp:Literal>
</div>
</form>
</body>
</html>
利用Session传值的页面aspx.cs代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class Default2 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Literal1.Text = Session["uid"].ToString();
}
}
利用超链接传值的页面aspx代码:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default3.aspx.cs" Inherits="Default3" %>
<!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>
</head>
<body>
<form id="form1" runat="server">
<div>
欢迎:<asp:Literal ID="Literal1" runat="server"></asp:Literal>
</div>
</form>
<p>
</p>
</body>
</html>
利用超链接传值的页面aspx.cs代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class Default3 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
string uid = Request["uid"].ToString();
string pwd = Request["pwd"].ToString();
Literal1.Text = uid + " " + pwd;
}
}
图片验证码,就是首先造一张空白的图,然后在图片上绘制随机数就可以了,在这里用到了一般处理程序。
一般处理程序就是单纯的页面(无任何标签),是.ashx文件,里面的验证数字利用Session保存,用Response显示在页面上,如果想用的话 直接图片按钮(Image Button)路径到这个页面就可以,, 而里面的验证数字则可以利用Session["xxx"]来接收。
<%@ WebHandler Language="C#" Class="Handler" %>
using System;
using System.Web;
using System.Drawing;//引用绘图命名空间
using System.Web.SessionState;//IRequiresSessionState的命名空间
public class Handler : IHttpHandler , IRequiresSessionState //Session的接口,必须得继承,不然没法用session
{
public void ProcessRequest (HttpContext context) {
context.Response.ContentType = "image/jpeg";//设置类型
//开始造图片,
Bitmap img = new Bitmap(50, 20); //一张宽度为50,高度为20的空白图片
Graphics gc = Graphics.FromImage(img); //往img图里绘制
Font font = new Font("楷体", 12, FontStyle.Bold);//字体格式
SolidBrush brush = new SolidBrush(Color.White);//刷子格式 ,里面的颜色是背景颜色
gc.FillRectangle(brush, 0, 0, 50, 20);//绘制的样子
brush.Color = Color.Red;//刷子颜色
//已经绘制完了,往图里扔验证码,开始造验证码
string s = "1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
string str = "";
Random r = new Random(); //随机出一个数来
for (int i = 0; i < 4; i++)
{
int x = r.Next(0, 62);
string ss = s.Substring(x, 1); //截取字符串
str += ss;
}
//验证码已经造好了,开始往图片里扔,前提先保存一下验证码的内容,为了以后的使用(输入验证)
context.Session["yanzheng"] = str;
//往图片里仍
gc.DrawString(str, font, brush, 0, 0);
// 最后将图片保存,通过response响应流保存
img.Save(context.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);
}
public bool IsReusable {
get {
return false;
}
}
}
一般处理程序造好以后,需要来用它,这里是用的图片按钮(ImageBotton)来接收,右键ImageButton ,找到ImageUrl属性,直接选择路径就可以了,在这里的路径是Handler.ashx。图片已经显示在页面上了,就需要进行验证。。。 用Session来接收 在注册页面aspx.cs代码下
数据库:
use mydb
create table zhuce
(
Id varchar(50) primary key not null,
Uid varchar(50) not null,
Pwd varchar(50) not null,
Adrs varchar(50),
)
select*from zhuce
select * from chinastates
select * from chinastates where ParentAreaCode=0000
select * from chinastates where ParentAreaCode=0001
select * from chinastates where ParentAreaCode=11
select * from chinastates where ParentAreaCode=1101