asp.net mvc学习笔记之设置一个自定义控件--登录控件(本博文对51自学网代码有所参考与引用)

1、UserLogin.ascx.cs

using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.UI;
using System.Web.UI.WebControls;
using WebSite;


namespace mvc_site1.App_ctl
{
    public partial class UserLogin : System.Web.UI.UserControl
    {


        protected void Page_Load(object sender, EventArgs e)
        {
        }

        protected void btn_login_Click(object sender, EventArgs e)
        {
            superUserInfo su = (superUserInfo)Session["userInfo"];
            su.UserID = txt_id.Text;
            su.UserPWD = txt_pwd.Text;
            su.AutoLogin = chk_autoLog.Checked;
            if (su.tryLogin())
            { su.setCookies(); }
        }
       
       

/////////////////////////////


        protected void Page_PreRender(object sender, EventArgs e)
        {
            superUserInfo su = (superUserInfo)Session["userInfo"];
            if (su.GetIsLogin())
            {
                mv_login.SetActiveView(v_success);
            }
            else
            {
                mv_login.SetActiveView(v_login);
            }
        }

        protected void Button1_Click(object sender, EventArgs e)
        {
            ((superUserInfo)Session["userInfo"]).LogOut();
        }     

    }
}

2、UserLogin.ascx

 1 <%@ Control Language="C#" AutoEventWireup="true" CodeBehind="UserLogin.ascx.cs" Inherits="mvc_site1.App_ctl.UserLogin" %>
 2 <link href="../App_style/Css1.css" rel="stylesheet" />
 3 
 4 
 5     <asp:ScriptManagerProxy ID="ScriptManagerProxy1" runat="server"></asp:ScriptManagerProxy>
 6     <asp:UpdatePanel ID="UpdatePanel1" runat="server">
 7         <ContentTemplate>
 8          <asp:MultiView ID="mv_login" runat="server">
 9         <asp:View ID="v_login" runat="server">
10             <p>登录界面</p>
11             <asp:TextBox ID="txt_id" runat="server"></asp:TextBox><br/>
12             <asp:TextBox ID="txt_pwd" runat="server" TextMode="Password"></asp:TextBox>
13             <asp:CheckBox ID="chk_autoLog" runat="server" Text="自动登录" />
14             <asp:Button ID="btn_login" runat="server" Text="登陆" OnClick="btn_login_Click" /><br/>
15         </asp:View>
16 
17 
18         <asp:View ID="v_success" runat="server">
19             <p>已登录</p>
20             <asp:Button ID="Button2" runat="server" Text="退出登陆" OnClick="Button1_Click" />
21         </asp:View>
22     </asp:MultiView>
23      </ContentTemplate>
24     </asp:UpdatePanel>
25    

3、类库文件myclass1.cs

  1 using System;
  2 using System.Collections.Generic;
  3 using System.Data;
  4 using System.Data.SqlClient;
  5 using System.Linq;
  6 using System.Web;
  7 using System.Web.UI.WebControls;
  8 
  9 namespace WebSite
 10 {
 11     public class superConn
 12     {
 13        public SqlConnection cnn;
 14        private SqlCommand cmd;
 15        private SqlDataReader datar;
 16        public superConn(string filename) 
 17        {
 18            string _path = "server=.;database="+filename+";uid=sa;pwd=sasa123";
 19            cnn = new SqlConnection(_path);
 20        }
 21        public void Open()
 22        {
 23            cnn.Open();
 24        }
 25        public void Close()
 26        {
 27            cnn.Close();
 28        }
 29        public SqlDataReader Command(string _sql, string str1, string str2, string str3, string str4)
 30        {
 31            cmd = new SqlCommand(_sql, cnn);
 32            cmd.Parameters.AddWithValue(str1, str3);
 33            cmd.Parameters.AddWithValue(str2, str4);
 34            SqlDataAdapter da = new SqlDataAdapter(cmd);
 35            DataTable dt = new DataTable();
 36            da.Fill(dt);
 37            SqlDataReader reader = cmd.ExecuteReader();
 38            return reader;
 39        }
 40        public SqlDataReader GetDataReader(string _sql)
 41        {
 42            cmd = new SqlCommand(_sql,cnn);
 43            datar = cmd.ExecuteReader();
 44            return datar;
 45        }
 46         //返回DDL控件报名列表
 47        public DropDownList GetDDlforTableList()
 48        {
 49            DropDownList _ddl = new DropDownList();
 50            cnn.Open();
 51            DataTable dt = cnn.GetSchema("Tables", null);
 52            foreach(DataRow dr in dt.Select("TABLE_TYPE='TABLE'"))
 53            {
 54                string s = dr["TABLE_NAME"].ToString();
 55                _ddl.Items.Add(new ListItem(s));
 56 
 57            }
 58            cnn.Close();
 59            return _ddl;
 60        }
 61      //返回table,详细表内容
 62        public Table GetTable(string _tableName)
 63        {
 64            Table _tbl = new Table();
 65            cnn.Open();
 66            cmd = new SqlCommand("SELECT * FROM"+_tableName,cnn);
 67            datar = cmd.ExecuteReader();
 68 
 69            int i_fcount = datar.FieldCount;
 70            TableHeaderRow thr = new TableHeaderRow();
 71            for (int i = 0; i < i_fcount; i++)
 72            {
 73                TableHeaderCell thd= new TableHeaderCell();
 74                thd.Text = datar.GetName(i);
 75                thr.Cells.Add(thd);
 76            }
 77            _tbl.Rows.Add(thr);
 78 
 79 
 80            while (datar.Read())
 81            {
 82                TableRow tr = new TableRow();
 83                for (int i = 0; i < i_fcount; i++)
 84                {
 85                    TableCell td = new TableCell();
 86                    td.Text = datar[i].ToString();
 87                    tr.Cells.Add(td);
 88                }
 89                _tbl.Rows.Add(tr);
 90 
 91            }
 92                cnn.Close();
 93                return _tbl;
 94        }
 95 
 96     }
 97 
 98     public class superUserInfo
 99     {
100         public string UserID;
101         public string UserPWD;
102         public Boolean AutoLogin;
103         private Boolean isLogin;
104         public superUserInfo()
105         {
106             UserID = "";
107             UserPWD = "";
108             isLogin = false;
109             try
110             {
111                 ReadCookies();
112                 if (AutoLogin)
113                 { tryLogin(); }
114             }
115             catch { }
116         }
117         public Boolean GetIsLogin()
118         {
119             return isLogin;
120         }
121 
122         //设置cookie
123         public void setCookies()
124         {
125             HttpCookie ck = new HttpCookie("ckLogin");
126             ck.Values.Add("cID", HttpUtility.UrlEncode(UserID));
127             ck.Values.Add("cPWD", HttpUtility.UrlEncode(UserPWD));
128             ck.Values.Add("cAutoLogin", HttpUtility.UrlEncode(AutoLogin.ToString()));
129             //ck.Values.Add("cID",UserID);
130             //ck.Values.Add("cPWD",UserPWD);
131             //ck.Values.Add("cAutoLogin", AutoLogin.ToString());
132             ck.Expires = DateTime.MaxValue;
133             HttpContext.Current.Response.Cookies.Add(ck);
134         }
135         //读取cookie
136         public void ReadCookies()
137         {
138             HttpCookie ck = HttpContext.Current.Request.Cookies["ckLogin"];
139             UserID = HttpUtility.UrlDecode(ck["cID"]);
140             UserPWD = HttpUtility.UrlDecode(ck["cPWD"]);
141             AutoLogin = Boolean.Parse(HttpUtility.UrlDecode(ck["cAutoLogin"]));
142             //UserID = ck.Values["cID"];
143             //UserPWD = ck.Values["cPWD"];
144             //AutoLogin = Boolean.Parse(ck.Values["cAutoLogin"]);
145 
146         }
147         //尝试登陆方法
148         public Boolean tryLogin()
149         {
150             isLogin = false;
151             superConn conn = new superConn("User_LogIn");
152             conn.Open();
153             string _sql = "select * from [dbo].[User] where UserName='" + UserID + "'";
154             SqlDataReader dr = conn.GetDataReader(_sql);
155             if (dr.Read())
156             {
157                 if (dr["Password"].ToString() == UserPWD)
158                 {
159                     isLogin = true;
160                 }
161             }
162             conn.Close();
163             return isLogin;
164         }
165         //退出登陆方法
166         public void LogOut()
167         {
168             isLogin = false;
169         }
170     }
171 
172 
173 }

4、添加一个默认首页default.aspx,引用自定义母版页后,添加该登录控件

1 <%@ Page Title="" Language="C#" MasterPageFile="~/mst_lv0.Master" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="mvc_site1.Default" %>
2 <%@ Register Src="~/App_ctl/UserLogin.ascx" TagName="userLogin" TagPrefix="myCtrls" %>
3 <asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
4 </asp:Content>
5 <asp:Content ID="Content2" ContentPlaceHolderID="cph_bigimg" runat="server">
6 </asp:Content>
7 <asp:Content ID="Content3" ContentPlaceHolderID="cph_contant_temp" runat="server">
8    <myCtrls:userLogin id="UserLogin1" runat="server"/>
9 </asp:Content>

5、设置Global.asax文件

 1 <%@ Application Codebehind="Global.asax.cs" Inherits="mvc_site1.MvcApplication" Language="C#" %>
 2 
 3  <%@Import Namespace="System.IO"%>
 4 
 5  <%@Import Namespace="WebSite"%>
 6 
 7 <script RunAt="server">
 8     protected void Application_Start(object sender, EventArgs e)
 9     {
10 
11     }
12 
13     protected void Session_Start(object sender, EventArgs e)
14     {
15         //新会话启动时运行的代码
16        // Session["SampleLogin"] = new SampleLogin();
17         Session["UserInfo"] = new superUserInfo();
18     }
19 
20     protected void Application_BeginRequest(object sender, EventArgs e)
21     {
22 
23     }
24 
25     protected void Application_AuthenticateRequest(object sender, EventArgs e)
26     {
27 
28     }
29 
30     protected void Application_Error(object sender, EventArgs e)
31     {
32 
33     }
34 
35     protected void Session_End(object sender, EventArgs e)
36     {
37         //在会话结束时运行的代码。 
38         // 注意: 只有在 Web.config 文件中的 sessionstate 模式设置为
39         // InProc 时,才会引发 Session_End 事件。如果会话模式 
40         //设置为 StateServer 或 SQLServer,则不会引发该事件。
41     }
42 
43     protected void Application_End(object sender, EventArgs e)
44     {
45 
46     }
47 </script>
posted @ 2016-02-26 16:33  动感回旋踢  阅读(686)  评论(0编辑  收藏  举报