ASP.NET自定义Web服务器控件-登录控件

本文详细介绍了自定义服务器登录控件的实现过程,包括属性设置、事件处理及使用方法,旨在帮助开发者构建更灵活的登录界面。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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("用户通过了验证了");
    }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值