20150225--ASP.NET基础(2)
一、引用外部样式表或JS,在<head>…</head>标签之间添加:
<link href="yangshi.css" type="text/css" rel="stylesheet" />
<script src="jquery-2.1.1.js"></script>
注意文件路径, ../ 表示从本级目录向上一级, 文件名/ 表示向下一级
二、如何在ASP.NET的网页中实现用户登录:
1.使用ASP.net的控件:
按照下图绘制(注意图中的按钮使用的是ASP.NET的控件):


按钮的点击事件代码,需要写在.cs文件中,
protected void btnSubmit_Click(object sender, EventArgs e)
{
string user = txtUser.Text.Trim();//获取输入的用户名
if (user == "")
{
Response.Write("<font size=36 color=#e3e3e3>不能为空</font>");
}
string pwd = txtPwd.Text.Trim();//获取输入的密码
if (txtYzm.Text.Trim() == yzm.Text)
{
UserTableData udata = new UserTableDA().Select(user, pwd);//比对,这个方法并非Code Smith自动创建,
if (udata != null)
{
Response.Redirect("http://baidu.com");//比对正确,打开百度网页
}
else
{
Label1.Visible = true;
}
}
else
{
Response.Write("<font size=36 color=#ccaa55>验证码错误</font>");
}
}
Response.Write() 在HTML的源中写入()中的内容,遵循HTML的语言格式。
此段代码中使用的是Code Smith自动生成增删改查,与面向对象中的自己创建的增删改查是一样的。
Select(user,pwd)的内容:(根据Code Smith生成的代码改写)
public UserTableData Select(string user,string pwd)
{
UserTableData data = null;
_Cmd.CommandText = "select * from UserTable where uname = @uname and upwd=@upwd";
_Cmd.Parameters.Clear();
_Cmd.Parameters.AddWithValue("@uname", user);
_Cmd.Parameters.AddWithValue("@upwd", pwd);
try
{
_Conn.Open();
SqlDataReader dr = _Cmd.ExecuteReader();
while (dr.Read())
{
data = new UserTableData();
data.Ucode = (Int32)dr["ucode"];
data.Uname = (String)dr["uname"];
data.Upwd = (String)dr["upwd"];
data.Uvip = (String)dr["uvip"];
data.Uremark = (String)dr["uremark"];
}
dr.Close();
dr.Dispose();
}
catch (Exception ex)
{
throw ex;
}
finally
{
_Conn.Close();
_Cmd.Dispose();
_Conn.Dispose();
}
return data;
}
使用HTML的控件,

注意其单击事件,有两种单击事件,一种是onclick,一种是onserverclick(在服务器上单击)
onclick事件是写在本页面中HTML的方法function():
<script>
function yanzheng()
{
var x = document.getElementById("txtUser");
if (x.value.length == 0)
{
alert("用户名不能为空");
}
}
</script>
alert() 弹出对话框。
onserverclick事件写在此网页的.cs文件中
protected void btnSubmit_ServerClick(object sender, EventArgs e)
{
string user = txtUser.Value;
string pwd = txtUser2.Value;
UserTableData udata = new UserTableDA().Select(user, pwd);
if (udata != null)
{
Response.Redirect("http://baidu.com");
}
else
{
Label1.Text = "用户不存在";
}
}
添加图片类型的验证码:
在网站项目中新加一个类:一般处理程序(.ashx文件),

然后写入以下代码(替代原有的代码):
<%@ WebHandler Language="C#" Class="Handler" %> using System;
using System.Web;
using System.Web.SessionState;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Drawing.Imaging;
public class Handler : IHttpHandler,IRequiresSessionState{ public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "image/jpeg";
Bitmap img = new Bitmap(50, 20);//位图
Graphics g = Graphics.FromImage(img); string s = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
string str = "";
Random rand = new Random();//初始化随机数
for (int i = 0; i < 4; i++)
{
int start = rand.Next(62); //生成一个随机的起始位置
str += s.Substring(start, 1).ToString();
}
context.Session["code"] = str; Font font = new Font("宋体", 12, FontStyle.Bold);
SolidBrush brush = new SolidBrush(Color.White);
g.FillRectangle(brush, 0, 0, 50, 20);
brush.Color = Color.Red;
g.DrawString(str, font, brush, 0, 0);
img.Save(context.Response.OutputStream, ImageFormat.Jpeg);
} public bool IsReusable {
get {
return false;
}
} }
在网页中添加一个Image的控件:

ImageUrl就是刚刚创建的一般处理程序的文件名。
注意,点击验证码只刷新验证码,用到了一个异步操作,在AJAX扩展中的两个控件:
ScriptManager与UpdatePanel

注意,ScriptManager控件必须在UpdatePanel之前,一般将其放在网页的最开始:

HTML源:
<body>
<form id="form1" runat="server">
<div>
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager> <asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
验证码:<asp:TextBox ID="txtCode" runat="server" Width="74px"></asp:TextBox>
<asp:Image ID="Image1" ToolTip="看不清点击换一张" runat="server" ImageUrl="Code.ashx" />
<br />
<asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="登录" />
<asp:Label ID="Label1" runat="server" ForeColor="Red"></asp:Label>
</ContentTemplate>
</asp:UpdatePanel>
</div>
</form>
</body>
UpdatePanel标签把需要单独提交的内容包裹起来即可。

20150225--ASP.NET基础(2)的更多相关文章
- (转)asp.net基础-HttpModule
HttpModule是向实现类提供模块初始化和处置事件.当一个HTTP请求到达HttpModule时,整个ASP.NET Framework系统还并没有对这个HTTP请求做任何处理,也就是说此时对于H ...
- ASP.NET基础之HttpHandler学习
ASP.NET基础之HttpHandler学习 经过前两篇[ASP.NET基础之HttpModule学习]和[ASP.NET基础之HttpContext学习]文章的学习我们对ASP.NET的基础内容有 ...
- ASP.NET基础之HttpModule学习
最近学习WCF知识时看到有关IIS版本的知识,发现对HttpContext,HttpModule,HttpHandler的内容都不是很了解,这三个也是ASP.NET相对基础的内容,晚上特地花点时间针对 ...
- ASP.NET基础知识汇总之WebConfig自定义节点详细介绍
之前介绍过Webconfig的具体知识ASP.NET基础知识汇总之WebConfig各节点介绍.今天准备封装一个ConfigHelper类,涉及到了自定义节点的东东,平时虽然一直用,但也没有系统的总结 ...
- [随记][asp.net基础]Page_Load和OnLoad
标题:[随记][asp.net基础]Page_Load和OnLoad 一.前言 东西好久不用.不想,就会忘,所以没办法,只好记下来. 二.正文 aspx页面加载的时候会自动执行Page_Load,也会 ...
- (转)ASP.NET基础之HttpHandler学习
原文地址:http://www.cnblogs.com/wujy/archive/2013/08/18/3266009.html 经过前两篇[ASP.NET基础之HttpModule学习]和[ASP. ...
- 【ASP.NET 基础】表单和控件
1.HTML表单的提交方式 对于一个普通HTML表单来说,它有两个重要的属性:action 和 method.action属性指明当前表单提交之后由哪个程序来处理,这个处理程序可以是任何动态网页或者 ...
- 【ASP.NET 基础】ASP.NET内置对象
准确地说,asp.net 并没有内置对象这一说,jsp 里确实把 request.response 这些当作 jsp 的内置对象,这里只不过是借用了一下 jsp 的说法而已.在 Web 中处于中心的是 ...
- ASP.NET基础笔记
MSDN: ...
- asp.net基础
这篇主要讲述以下基础知识: Request对象 Response对象 Server对象 Cookie对象 Application对象 ViewState对象 <%%>与<%=%> ...
随机推荐
- Effective C++笔记04:设计与声明
条款18:让接口easy被正确使用,不易被误用 1,好的接口非常easy被正确使用,不easy被误用.你应该在你的全部接口中努力达成这些性质. 2,"促进正使用"的办法包含接口的一 ...
- zoj3820 Building Fire Stations 树的中心
题意:n个点的树,给出n-1条边,每条边长都是1,两个点建立防火站,使得其他点到防火站的最远距离最短. 思路:比赛的时候和队友一开始想是把这两个点拎起来,使得层数最少,有点像是树的中心,于是就猜测是将 ...
- Eclipse使用jre的原理与配置
近期要配置Eclipse环境,Mark当中的一些方法. 下载Eclipse SDK之后我们就要关联JRE,由于Eclipse启动须要JRE. Eclipse启动时寻找JRE的顺序: 1.假设eclip ...
- GridView 编辑修改
//点击gridview控件自带的编辑按钮时执行的事件 protected void gvNewsList_RowEditing(object sender, GridViewEditEvent ...
- 微信公共服务平台开发(.Net 的实现)9-------处理二维码
今天我们来共同学习一下微信公共服务平台中一个重要内容---二维码扫描.众所周知二维码目前应用范围很广,在这里不再叙述背景了,但是值得一提的是目前大家手机上面应用的二维码扫描工具是支持的都是QR码和PD ...
- Network Link Conditioner模拟不同网络环境
在Xcode4.1中有一个工具叫Network Link Conditioner,可以让用户模拟不同的网络连接和带宽,可供Mac和iOS开发者测试自己的程序在不同网络环境下的表现. 在Xcode4.3 ...
- linux用户权限
Linux下passwd和shadow文件内容详解 一./etc/passwd/etc/passwd 文件是一个纯文本文件,每行采用了相同的格式: name:password:uid:gid:comm ...
- ngrok 2016版
1. 先到http://www.ngrok.cc/下载客户端 2.进管理页面 注册登录 3.绑定域名 新增: 复制客户端id 打开该目录 按住shift 右键->在此处打开命令窗口 输入 sta ...
- C++类设计2(Class with pointer members)
二 Class with pointer members(Class String) 1. 测试代码(使用效果) int main() { String s1(), String s2("h ...
- Entity Framework之问题收集
本节讨论内容主要针对收集了上篇文章大家碰到问题的讨论解决,会持续收集扩充. DbContext加载原值,当前值,数据库值,属性操作,对象复制,对象值复制(VO,DTO->POCO),复杂对象取值 ...