找回密码
 会员注册
查看: 195|回复: 0

ASP.net 简单登录界面

[复制链接]

1389

主题

5

回帖

496万

积分

管理员

积分
4962990
发表于 2024-2-29 08:52:39 | 显示全部楼层 |阅读模式

一.说明

此文是小白在学习张晨光老师的视频教学<>中做的学习笔记,一些知识点也是跟着教程走的,大家也可以去老师的主页去学习,谢谢大家.

这一篇要练习的是,如下课程的代码:

在这里插入图片描述

新建项目:
在这里插入图片描述

因为这里小白用到的是mysql,所以引用:MySql.Data.dll大家可去官网自行搜索下载,index.aspx,login.aspx,login_new.aspx,ToolMysqlDate.cs是新添加的,后面会展开里面的代码.

bootstrap-5.1.3-dist文件夹里是Bootstrap5的前端组件库,从官网 getbootstrap.com 下载 Bootstrap 5.

二.登录界面(login.aspx)

前端代码:

  1. <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="login.aspx.cs" Inherits="MyMusci.login" %>
  2. <!DOCTYPE html>
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <head runat="server">
  5. <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
  6. <title></title>
  7. <!--将Bootstrap5引入-->
  8. <link href="bootstrap-5.1.3-dist/css/bootstrap.css" rel="stylesheet" />
  9. <script src="bootstrap-5.1.3-dist/js/bootstrap.bundle.js"></script>
  10. </head>
  11. <body>
  12. <form id="form1" runat="server">
  13. <%--这里引用Bootstrap5的模板 class="container mt-3"--%>
  14. <div class="container mt-3">
  15. <%--这里引用Bootstrap5的table的模板样式 class="table"--%>
  16. <table class="table">
  17. <tr>
  18. <%--这里引用Bootstrap5的模板样式--%>
  19. <td colspan="3" class="table-primary display-3 text-center text-primary">登录界面</td>
  20. </tr>
  21. <tr>
  22. <td>账户</td>
  23. <td>
  24. <asp:TextBox ID="userName" runat="server"></asp:TextBox>
  25. </td>
  26. <td>
  27. <%--
  28. **RequiredFieldValidator** 控件用于使输入控件成为一个必需(必填)的字段
  29. ControlToValidate 要验证的控件的 id
  30. Display 验证控件的显示行为 'Dynamic' 如果验证失败,控件显示错误消息.如果输入通过,页面上不预留显示消息的空间.
  31. Text 当验证失败时显示的消息
  32. ForeColor 控件的前景颜色
  33. ErrorMessage 当验证失败时,在 ValidationSummary 控件中显示的文本(这里没有具体使用)
  34. -%>
  35. <asp:RequiredFieldValidator ID="rfv_useName" runat="server" ControlToValidate="userName" Display="Dynamic" ErrorMessage="RequiredFieldValidator" ForeColor="Red">账户不可为空</asp:RequiredFieldValidator>
  36. <%--
  37. **RegularExpressionValidator** 控件用于验证输入值是否匹配指定的模式
  38. ControlToValidate 要验证的控件的 id
  39. Text 当验证失败时显示的消息
  40. ForeColor 控件的前景颜色
  41. ErrorMessage 当验证失败时,在 ValidationSummary 控件中显示的文本(这里没有具体使用)
  42. ValidationExpression 规定验证输入控件的正则表达式(此处\w{5,13}表示可以输入字符串,长度在5-13之间)
  43. --%>
  44. <asp:RegularExpressionValidator ID="rev_userName" runat="server" ControlToValidate="userName" Display="Dynamic" ErrorMessage="RegularExpressionValidator" ForeColor="Red" ValidationExpression="\w{5,13}">您输入的账户异常(5-12位)</asp:RegularExpressionValidator>
  45. </td>
  46. </tr>
  47. <tr>
  48. <td class="auto-style2">密码</td>
  49. <td class="auto-style2">
  50. <asp:TextBox ID="userPwd" runat="server"></asp:TextBox>
  51. </td>
  52. <td class="auto-style2">
  53. <asp:RequiredFieldValidator ID="rfv_userPwd" runat="server" ControlToValidate="userPwd" Display="Dynamic" ErrorMessage="RequiredFieldValidator" ForeColor="Red">密码不可为空</asp:RequiredFieldValidator>
  54. <asp:RegularExpressionValidator ID="rev_userPwd" runat="server" ControlToValidate="userPwd" Display="Dynamic" ErrorMessage="RegularExpressionValidator" ForeColor="Red" ValidationExpression="\w{8,13}">您输入的密码异常(8位)</asp:RegularExpressionValidator>
  55. </td>
  56. </tr>
  57. <tr>
  58. <td>
  59. <%--这里引用Bootstrap5的模板样式--%>
  60. <asp:Button ID="btn_sub" runat="server" Text="登录" class="btn btn-primary" OnClick="btn_sub_Click" />
  61. </td>
  62. <td>
  63. <%--这里引用Bootstrap5的模板样式--%>
  64. <asp:Button ID="btn_reset" runat="server" OnClick="btn_reset_Click" Text="重置" class="btn btn-secondary" />
  65. </td>
  66. <td>&nbsp;</td>
  67. </tr>
  68. </table>
  69. </div>
  70. </form>
  71. </body>
  72. </html>
复制代码

后台代码:

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Web;
  5. using System.Web.UI;
  6. using System.Web.UI.WebControls;
  7. using System.Data;
  8. using System.Collections;
  9. namespace MyMusci
  10. {
  11. public partial class login : System.Web.UI.Page
  12. {
  13. protected void Page_Load(object sender, EventArgs e)
  14. {
  15. }
  16. /// <summary>
  17. /// 重置按钮点击事件
  18. /// </summary>
  19. /// <param name="sender"></param>
  20. /// <param name="e"></param>
  21. protected void btn_reset_Click(object sender, EventArgs e)
  22. {
  23. //将输入的值值空
  24. userName.Text = "";
  25. userPwd.Text = "";
  26. }
  27. /// <summary>
  28. /// 登录按钮点击事件
  29. /// </summary>
  30. /// <param name="sender"></param>
  31. /// <param name="e"></param>
  32. protected void btn_sub_Click(object sender, EventArgs e)
  33. {
  34. //先做测试,看看程序能不能跑起来
  35. //if ("administrator".Equals(userName.Text) && "12345678".Equals(userPwd.Text)) {
  36. // Response.Redirect("index.aspx");
  37. //}
  38. //从数据库中查寻用户名和密码
  39. string sql = "SELECT COUNT(*) FROM user_all WHERE user_name=?name AND user_pwd=?pwd";
  40. //之间的练习中一直用到,将前端文本框中的值填入Hashtable里(记得加引用哦)
  41. Hashtable ht = new Hashtable();
  42. ht.Add("name",userName.Text.ToString());
  43. ht.Add("pwd", userPwd.Text.ToString());
  44. //进行后台的聚合查询,返回查询到的值
  45. int resilc=ToolMysqlDate.excutScal(sql,ht);
  46. //如果数据库中有这个值
  47. if (resilc > 0)
  48. {
  49. //将用户名绑定到Session
  50. Session["userName"] = userName.Text.ToString();
  51. //然后跳转至其他界面
  52. Response.Redirect("index.aspx");
  53. }
  54. else {
  55. //如果数据库查无此数据,就弹出提示框,告知用户
  56. Response.Write("<script>alert('您输入的账户或密码有误,请核对后输入!!!')</script>");
  57. }
  58. }
  59. }
  60. }
复制代码

三.ToolMysqlDate.cs的相关配置

一.在Web.config中的configuration标签下添加如下代码:

  1. <connectionStrings>
  2. <add name="Conn_MyMusic" connectionString="Database='example';Data Source='127.0.0.1';User Id='root';Password='xxxxx';charset='utf8';pooling=true"/>
  3. </connectionStrings>
  4. <!--
  5. 数据库位置:Data Source='127.0.0.1'//此处为本地数据库
  6. 用户名:User Id='....'
  7. 密码:Password='.....'
  8. 字符集:charset='.....'
  9. -->
复制代码

二.创建一个名为ToolMysqlDate.cs的类,并写入如下代码:

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Web;
  5. using MySql.Data.MySqlClient;
  6. using System.Configuration;//所引用config,需要提前引用命名空间
  7. using System.Collections;
  8. using System.Data;
  9. namespace MyMusci
  10. {
  11. public class ToolMysqlDate
  12. {
  13. //1.数据库的连接,创建等工作
  14. public static string connstr = ConfigurationManager.ConnectionStrings["Conn_MyMusic"].ToString();
  15. static MySqlConnection conn = new MySqlConnection(connstr);
  16. //封装ExecuteScalar方法,返回值为int类型
  17. public static int excutScal(String sql, Hashtable ht)
  18. {
  19. conn.Open();
  20. MySqlCommand cmd = new MySqlCommand(sql, conn);
  21. //把ht传递过来之后,需要给参数赋值;
  22. foreach (DictionaryEntry de in ht)
  23. {
  24. //第一个参数:key;第二个参数:value值
  25. cmd.Parameters.AddWithValue(de.Key.ToString(), de.Value.ToString());
  26. }
  27. int result;
  28. try
  29. {
  30. //运行并赋值
  31. result = Convert.ToInt32(cmd.ExecuteScalar());
  32. }
  33. finally
  34. {
  35. conn.Close();
  36. }
  37. //返回
  38. return result;
  39. }
  40. }
  41. }
复制代码

四.index.aspx配置

index.aspx里面并无填充其他内容,循序渐进吧,前端代码并未加任何控件,后台代码如下:

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Web;
  5. using System.Web.UI;
  6. using System.Web.UI.WebControls;
  7. namespace MyMusci
  8. {
  9. public partial class index : System.Web.UI.Page
  10. {
  11. protected void Page_Load(object sender, EventArgs e)
  12. {
  13. //如果能读取到Session对象,则显示相应的话
  14. if (Session["userName"] != null)
  15. {
  16. Response.Write("欢迎:"+ Session["userName"].ToString()+"登录本页面");
  17. }
  18. //否则,提示错误,并返回至登录界面
  19. else
  20. {
  21. Response.Write("<script>alert('您的登录已过时,请重新登录!!!')</script>");
  22. Response.Redirect("login.aspx");
  23. }
  24. }
  25. }
  26. }
复制代码

五.效果

当输入不正确的用户名即密码:

在这里插入图片描述

在这里插入图片描述

当我们输入正确的用户及密码:
界面会自动跳转至登录界面
在这里插入图片描述

六.AJAX登录界面(login_new.aspx)

前端界面与login.aspx并无太大差别,只是将table嵌套入AJAX里,这样做的好处是节省时间,不耗费服务器资源:

  1. <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="login_new.aspx.cs" Inherits="MyMusci.login_new" %>
  2. <!DOCTYPE html>
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <head runat="server">
  5. <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
  6. <title></title>
  7. <link href="bootstrap-5.1.3-dist/css/bootstrap.css" rel="stylesheet" />
  8. <script src="bootstrap-5.1.3-dist/js/bootstrap.bundle.js"></script>
  9. </head>
  10. <body>
  11. <form id="form1" runat="server">
  12. <div class="container mt-3">
  13. <%--使用AJAX,先调用ScriptManager控件--%>
  14. <asp:ScriptManager ID="ScriptManager1" runat="server">
  15. </asp:ScriptManager>
  16. <%--然后使用UpdatePanel控件,把登录界面的显示包裹进此控件中--%>
  17. <asp:UpdatePanel ID="UpdatePanel1" runat="server">
  18. <%--因为不可之间进行包裹关系,所以先添加ContentTemplate,把代码放在ContentTemplate里--%>
  19. <ContentTemplate>
  20. <table class="table">
  21. <tr>
  22. <td class="table-primary display-3 text-center text-primary" colspan="3">登录界面</td>
  23. </tr>
  24. <tr>
  25. <td>账户</td>
  26. <td>
  27. <asp:TextBox ID="userName" runat="server"></asp:TextBox>
  28. </td>
  29. <td>
  30. <asp:RequiredFieldValidator ID="rfv_useName" runat="server" ControlToValidate="userName" Display="Dynamic" ErrorMessage="RequiredFieldValidator" ForeColor="Red">账户不可为空</asp:RequiredFieldValidator>
  31. <asp:RegularExpressionValidator ID="rev_userName" runat="server" ControlToValidate="userName" Display="Dynamic" ErrorMessage="RegularExpressionValidator" ForeColor="Red" ValidationExpression="\w{5,13}">您输入的账户异常(5-12位)</asp:RegularExpressionValidator>
  32. </td>
  33. </tr>
  34. <tr>
  35. <td class="auto-style2">密码</td>
  36. <td class="auto-style2">
  37. <asp:TextBox ID="userPwd" runat="server"></asp:TextBox>
  38. </td>
  39. <td class="auto-style2">
  40. <asp:RequiredFieldValidator ID="rfv_userPwd" runat="server" ControlToValidate="userPwd" Display="Dynamic" ErrorMessage="RequiredFieldValidator" ForeColor="Red">密码不可为空</asp:RequiredFieldValidator>
  41. <asp:RegularExpressionValidator ID="rev_userPwd" runat="server" ControlToValidate="userPwd" Display="Dynamic" ErrorMessage="RegularExpressionValidator" ForeColor="Red" ValidationExpression="\w{8,13}">您输入的密码异常(8位)</asp:RegularExpressionValidator>
  42. </td>
  43. </tr>
  44. <tr>
  45. <td>
  46. <asp:Button ID="btn_sub" runat="server" class="btn btn-primary" OnClick="btn_sub_Click" Text="登录" />
  47. </td>
  48. <td>
  49. <asp:Button ID="btn_reset" runat="server" class="btn btn-secondary" OnClick="btn_reset_Click" Text="重置" />
  50. </td>
  51. <td>&nbsp;</td>
  52. </tr>
  53. </table>
  54. </ContentTemplate>
  55. </asp:UpdatePanel>
  56. </div>
  57. </form>
  58. </body>
  59. </html>
复制代码

后台:

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Web;
  5. using System.Web.UI;
  6. using System.Web.UI.WebControls;
  7. using System.Data;
  8. using System.Collections;
  9. namespace MyMusci
  10. {
  11. public partial class login_new : System.Web.UI.Page
  12. {
  13. protected void Page_Load(object sender, EventArgs e)
  14. {
  15. }
  16. /// <summary>
  17. /// 重置按钮点击事件
  18. /// </summary>
  19. /// <param name="sender"></param>
  20. /// <param name="e"></param>
  21. protected void btn_reset_Click(object sender, EventArgs e)
  22. {
  23. userName.Text = "";
  24. userPwd.Text = "";
  25. }
  26. /// <summary>
  27. /// 登录按钮点击事件
  28. /// </summary>
  29. /// <param name="sender"></param>
  30. /// <param name="e"></param>
  31. protected void btn_sub_Click(object sender, EventArgs e)
  32. {
  33. //测试
  34. //if ("administrator".Equals(userName.Text) && "12345678".Equals(userPwd.Text)) {
  35. // Response.Redirect("index.aspx");
  36. //}
  37. string sql = "SELECT COUNT(*) FROM user_all WHERE user_name=?name AND user_pwd=?pwd";
  38. Hashtable ht = new Hashtable();
  39. ht.Add("name", userName.Text.ToString());
  40. ht.Add("pwd", userPwd.Text.ToString());
  41. int resilc = ToolMysqlDate.excutScal(sql, ht);
  42. if (resilc > 0)
  43. {
  44. //将用户名绑定到Session
  45. Session["userName"] = userName.Text.ToString();
  46. //Response是服务器发出的响应,耗费资源,服务器的内存和网络的带宽
  47. //Response.Redirect("index.aspx");
  48. //监听的控件id UpdatePanel1
  49. //监听的控件类型 typeof(UpdatePanel)
  50. //调用脚本的方法名 ok_login
  51. //调用的脚本 alert('您已成功登录!');location.href='index.aspx'
  52. //是否是javascript true
  53. ScriptManager.RegisterStartupScript(UpdatePanel1, typeof(UpdatePanel), "ok_login", "alert('您已成功登录!');location.href='index.aspx'", true);
  54. }
  55. else
  56. {
  57. //Response.Write("<script>alert('您输入的账户或密码有误,请核对后输入!!!')</script>");
  58. ScriptManager.RegisterStartupScript(UpdatePanel1, typeof(UpdatePanel), "error_login", "alert('您输入的账户或密码有误,请核对后输入!!!')", true);
  59. }
  60. }
  61. }
  62. }
复制代码

效果如下:
当输入不正确的用户名及密码时,触发事件,我们发现之前的登录界面依旧存在,而不是重新刷新

在这里插入图片描述

当输入正确密码时:
在这里插入图片描述

在这里插入图片描述


来源:https://blog.csdn.net/m0_56227168/article/details/122849059
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?会员注册

×
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

QQ|手机版|心飞设计-版权所有:微度网络信息技术服务中心 ( 鲁ICP备17032091号-12 )|网站地图

GMT+8, 2024-12-26 11:38 , Processed in 0.620114 second(s), 26 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表