using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
//自定义web服务器登录控件-<客户端标签>
namespace MyControls
{
[DefaultProperty("Text")]
[ToolboxData("<{0}:MyLogin runat=server></{0}:MyLogin>")]
public class MyLogin : WebControl,IPostBackEventHandler
{
[Bindable(true)]
[Category("Appearance")]
[DefaultValue("")]
[Localizable(true)]
public string Text
{
get
{
String s = (String)ViewState["Text"];
return ((s == null) ? String.Empty : s);
}
set
{
ViewState["Text"] = value;
}
}
[Bindable(true)]
[Category("Appearance")]
[DefaultValue("")]
[Localizable(true)]
public string lblUserName //文本框对应的前面的文字
{
get
{
String s = (String)ViewState["lblUserName"];
return ((s == null) ? String.Empty : s);
}
set
{
ViewState["lblUserName"] = value;
}
}
[Bindable(true)]
[Category("Appearance")]
[DefaultValue("")]
[Localizable(true)]
public string UserNameText //用户名的文本框内容
{
get
{
String s = (String)ViewState["UserNameText"];
return ((s == null) ? String.Empty : s);
}
set
{
ViewState["UserNameText"] = value;
}
}
[Bindable(true)]
[Category("Appearance")]
[DefaultValue("")]
[Localizable(true)]
public string lblUserPassword //密码框的span
{
get
{
String s = (String)ViewState["lblUserPassword"];
return ((s == null) ? String.Empty : s);
}
set
{
ViewState["lblUserPassword"] = value;
}
}
[Bindable(true)]
[Category("Appearance")]
[DefaultValue("")]
[Localizable(true)]
public string UserPasswordText//密码文本框的内容
{
get
{
String s = (String)ViewState["UserPasswordText"];
return ((s == null) ? String.Empty : s);
}
set
{
ViewState["UserPasswordText"] = value;
}
}
[Bindable(true)]
[Category("Appearance")]
[DefaultValue("")]
[Localizable(true)]
public string UserNameErrMsg //用户名的错误提示
{
get
{
String s = (String)ViewState["UserNameErrMsg"];
return ((s == null) ? String.Empty : s);
}
set
{
ViewState["UserNameErrMsg"] = value;
}
}
[Bindable(true)]
[Category("Appearance")]
[DefaultValue("")]
[Localizable(true)]
public string UserPasswordErrMsg //用户密码的错误提示
{
get
{
String s = (String)ViewState["UserPasswordErrMsg"];
return ((s == null) ? String.Empty : s);
}
set
{
ViewState["UserPasswordErrMsg"] = value;
}
}
[Bindable(true)]
[Category("Appearance")]
[DefaultValue("")]
[Localizable(true)]
public string SubmitText //提交按钮的文字
{
get
{
String s = (String)ViewState["SubmitText"];
return ((s == null) ? String.Empty : s);
}
set
{
ViewState["SubmitText"] = value;
}
}
public bool isUserNameErrMsg=false;//默认不显示用户名的错误
[Bindable(true)]
[Category("Appearance")]
[DefaultValue("")]
[Localizable(true)]
public bool IsUserNameErrMsg //是否显示用户名的错误
{
get
{
return isUserNameErrMsg;
}
set
{
isUserNameErrMsg = value;
}
}
public bool isUserPasswordErrMsg = false;//默认不显示用户密码的错误
[Bindable(true)]
[Category("Appearance")]
[DefaultValue("")]
[Localizable(true)]
public bool IsUserPasswordErrMsg //是否显示用户密码的错误
{
get
{
return isUserPasswordErrMsg;
}
set
{
isUserPasswordErrMsg = value;
}
}
//用打印html标签的形式,建立用户登录控件
protected override void RenderContents(HtmlTextWriter output)
{
if (IsUserNameErrMsg == true) //如果是否显示错误信息=true就显示
{
output.Write("<p><span>" + lblUserName + "</span><input value='" + UserNameText + "' type='text' name='" + this.UniqueID + "_name'/><span>" + UserNameErrMsg + "</span></p>");
}
else {
output.Write("<p><span>" + lblUserName + "</span><input value='" + UserNameText + "' type='text' name='" + this.UniqueID + "_name'/></p>");
}
if (IsUserPasswordErrMsg == true)
{
output.Write("<p><span>" + lblUserPassword + "</span><input value='" + UserPasswordText + "' type='password' name='" + this.UniqueID + "_psw'/><span>" + UserPasswordErrMsg + "</span></p>");
}
else {
output.Write("<p><span>" + lblUserPassword + "</span><input value='" + UserPasswordText + "' type='password' name='" + this.UniqueID + "_psw'/></p>");
}
output.Write("<P><input type='submit' name='" + this.UniqueID + "' value='" + SubmitText + "' /></P>");
}
//回发事件
public delegate void LoginHandle(string userName, string userPassword);
private object key;
public event LoginHandle Login {
add {
this.Events.AddHandler(key, value);
}
remove {
this.Events.RemoveHandler(key, value);
}
}
public void RaisePostBackEvent(string eventArgument)
{
LoginHandle handle = (LoginHandle)base.Events[key];
UserNameText = this.Page.Request.Form[this.UniqueID + "_name"];//保存用户名
UserPasswordText = this.Page.Request.Form[this.UniqueID + "_psw"]; //保存用户密码
if (handle != null) {
handle(UserNameText, UserPasswordText);
}
}
}
}
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<%@ Register assembly="MyControls" namespace="MyControls" tagprefix="cc1" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<!-- 自定义服务器登录控件1(打印客户端标签)-->
<cc1:MyLogin lblUserName="用户名:" SubmitText="登 录" OnLogin="OnLogin" UserNameErrMsg="用户名不能为空" UserPasswordErrMsg="用户密码不能为空" lblUserPassword="密 码:" ID="MyLogin1" runat="server" />
</div>
</form>
</body>
</html>
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)
{
}
protected void OnLogin(string userName, string userPassword) {
if (userName == "")
{
MyLogin1.IsUserNameErrMsg = true; //显示用户名错误提示
return;
}
if (userPassword == "")
{
MyLogin1.IsUserPasswordErrMsg = true; //显示用户密码错误提示
return;
}
Response.Write("用户通过了验证了");
}
}