ASP.net 简单注册界面

2023-05-16

一.说明

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

这一篇要练习的是,如下课程的代码:
在这里插入图片描述
先新建img文件夹,用来存储图片:
在这里插入图片描述
图片大家可以在网上随便找一些壁纸来替代,练习所用,不必太过讲究

再新建js文件夹,用来存放js文件:
在这里插入图片描述
从 jquery.com 下载 jQuery

二.注册界面(RegUser.aspx)

前端代码:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="RegUser.aspx.cs" Inherits="MyMusci.RegUser" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title>会员注册</title>
    <link href="bootstrap-5.1.3-dist/css/bootstrap.css" rel="stylesheet" />
    <script src="bootstrap-5.1.3-dist/js/bootstrap.bundle.js"></script>
    <!--调用jquery-->
    <script src="js/jquery.js"></script>
    <style>
        /*将整个登入的div垂直居中*/
        .all {
            width: 700px;
            height: 260px;
            background-color: rgba(205,197,191,0.8);
            position: absolute;
            top: 0;
            bottom: 0;
            left: 0;
            right: 0;
            margin: auto;
            padding:0;
        }
        body {
            background-image: url("img/ys.jpg");
            /*整个图片作为背景,不够自动拉伸*/
            background-size: cover;
        }

    </style>
</head>
<body>
        <form id="form1" runat="server">
        <div class="container all">
            <table class="table">
                <tr>
                    <td colspan="3" class="table-primary display-6 text-center bg-primary text-white">会员注册</td>
                </tr>
                <tr>
                    <td>账户</td>
                    <td>
                        <asp:TextBox ID="userName" runat="server"></asp:TextBox>
                    </td>
                    <td>
                        <asp:RequiredFieldValidator ID="rfv_useName" runat="server" ControlToValidate="userName" Display="Dynamic" ErrorMessage="RequiredFieldValidator" ForeColor="Red">账户不可为空</asp:RequiredFieldValidator>
                        <asp:RegularExpressionValidator ID="rev_userName" runat="server" ControlToValidate="userName" Display="Dynamic" ErrorMessage="RegularExpressionValidator" ForeColor="Red" ValidationExpression="\w{5,13}">您输入的账户异常(5-12位)</asp:RegularExpressionValidator>
                    </td>
                </tr>
                <tr>
                    <td class="auto-style2">密码</td>
                    <td class="auto-style2">
                        <asp:TextBox ID="userPwd" runat="server"></asp:TextBox>
                    </td>
                    <td class="auto-style2">
                        <asp:RequiredFieldValidator ID="rfv_userPwd" runat="server" ControlToValidate="userPwd" Display="Dynamic" ErrorMessage="RequiredFieldValidator" ForeColor="Red">密码不可为空</asp:RequiredFieldValidator>
                        <asp:RegularExpressionValidator ID="rev_userPwd" runat="server" ControlToValidate="userPwd" Display="Dynamic" ErrorMessage="RegularExpressionValidator" ForeColor="Red" ValidationExpression="\w{8,13}">您输入的密码异常(8位)</asp:RegularExpressionValidator>
                    </td>
                </tr>
                <tr>
                    <td class="auto-style2">确认密码</td>
                    <td class="auto-style2">
                        <asp:TextBox ID="info_userPwd" runat="server"></asp:TextBox>
                    </td>
                    <td class="auto-style2">
                        <%--CompareValidator 控件用于将一个输入控件的值与另一个输入控件的值或常数值进行比较
                        ControlToCompare 	要与所验证的控件进行比较的控件名称
                        ControlToValidate 	要验证的控件的 id
                        Display 如果输入通过验证,页面上不预留显示消息的空间
                        ForeColor 控件的前景颜色
                        --%>
                        <asp:CompareValidator ID="CompareValidator1" runat="server" ErrorMessage="CompareValidator" ControlToCompare="userPwd" ControlToValidate="info_userPwd" Display="Dynamic" ForeColor="Red">您两次输入的密码不一致,请重新输入</asp:CompareValidator>
                        <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="userPwd" Display="Dynamic" ErrorMessage="RequiredFieldValidator" ForeColor="Red">密码不可为空</asp:RequiredFieldValidator>
                        <asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" ControlToValidate="userPwd" Display="Dynamic" ErrorMessage="RegularExpressionValidator" ForeColor="Red" ValidationExpression="\w{8,13}">您输入的密码异常(8位)</asp:RegularExpressionValidator>
                    </td>
                </tr>
                <tr>
                    <td>
                        <asp:Button ID="btn_sub" runat="server" Text="登录" class="btn btn-primary" OnClick="btn_sub_Click" />
                    </td>
                    <td>
                        &nbsp;</td>
                    <td>&nbsp;</td>
                </tr>
            </table>
        </div>
    </form>
    <script>
        //当光表移除该文本框时,触发的事件(我们希望当鼠标移除文本框时,对用户名进行校验)
        $("#userName").blur(function () {
            //使用ajax方法
            $.ajax({
                type: "post",//类型(get/post)
                url: "IsExistsUser.aspx",//跳转的地址
                data: "uname=" + $("#userName").val(),//数据
                //无异常时调用的方法
                success: function (msg) {
                    //msg返回的参数,接受到IsExistsUser.aspx所返回的值,并加以使用对应的方法
                    //alert("ok:"+msg)
                    if (msg == "1") {
                        //返回值为1表示数据库已存在该用户
                        alert("您输入的账户已被注册,请重新输入!!!");
                        //如果数据库存在此用户名,则清空该文本框中
                        $("#userName").val("");
                        //并将光标重新定位到该文本框中
                        $("#userName").focus();
                        
                    } else {
                        //alert("msg:"+msg);
                    }
                },
                //异常时调用的方法
                error: function (msg) {
                    alert("数据异常")
                }
            })
        })
		
		//登录按钮点击后,我们希望可以在数据库中插入用户输入的用户信息
        $("#btn_sub").click(function () {
            //测试
            //alert("按钮被点击")
            $.ajax({
                type: "post",
                url: "Handler/LoginHandler.ashx",//一般处理程序,统一放到一个文件夹下,方便管理
                data: { "name": $("#userName").val(), "pwd": $("#userPwd").val() },//此处使用json格式赋值
                success: function (msg) {
                    //alert("处理返回值:"+msg)
                    if (msg == "1") {
                        alert("恭喜您,已注册成功!")
                        //注册成功去某个界面
                        location.href = "login_new.aspx";
                    } else {
                        alert("注册失败!")
                    }
                },
                error: function (msg) {
                    alert("数据异常")
                }
            })
        })
    </script>
</body>
</html>

后台代码并无添加代码

三.ToolMysqlDate.cs的相关配置

新建Handler文件夹,并创建LoginHandler.ashx文件.
在这里插入图片描述
文件架构:
在这里插入图片描述
代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Collections;

namespace MyMusci.Handler
{
    /// <summary>
    /// LoginHandler 的摘要说明
    /// </summary>
    public class LoginHandler : IHttpHandler
    {

        public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "text/plain";
            //context.Response.Write("Hello World");

            //读取ajax的传递的值
            string name =context.Request["name"];
            string pwd = context.Request["pwd"];
			
			//之前的练习中使用并且提到过
            string sql = "INSERT INTO user_all ( user_name,user_pwd ) VALUES (?name,?pwd); ";
            Hashtable ht = new Hashtable();
            ht.Add("name", name);
            ht.Add("pwd", pwd);

            int res=ToolMysqlDate.executeSql(sql, ht);
            //如果插入成功,则返回1,类似的用法之前的ajax要用到过
            if (res > 0)
            {
                context.Response.Write("1");
            }
            else {
                context.Response.Write("0");
            }
        }

        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }
}

四.ToolMysqlDate.cs增加方法

我们在之前的ToolMysqlDate.cs中添加如下方法:

//封装增删该方法
public static int executeSql(String sql, Hashtable ht) {
     
     conn.Open();

     MySqlCommand cmd = new MySqlCommand(sql, conn);

     //把ht传递过来之后,需要给参数赋值;
     foreach (DictionaryEntry de in ht)
     {
         //第一个参数:key;第二个参数:value值
         cmd.Parameters.AddWithValue(de.Key.ToString(), de.Value.ToString());
     }

     int result;
     try
     {
         //运行并赋值,如果插入,删除,改SQL语句执行成功,则返回1
         result = Convert.ToInt32(cmd.ExecuteNonQuery());
     }
     finally
     {
         conn.Close();
     }
     //返回
     return result;
 }

五.给login_new.aspx添加css样式

为了避免大家复刻过程中出现一些不必要的问题,这里小白将全部代码放在下面,供大家练习:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="login_new.aspx.cs" Inherits="MyMusci.login_new" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
    <link href="bootstrap-5.1.3-dist/css/bootstrap.css" rel="stylesheet" />
   <script src="bootstrap-5.1.3-dist/js/bootstrap.bundle.js"></script>
    <style>
        /*将整个登入的div垂直居中*/
        .all {
            width: 700px;
            height: 260px;
            background-color: rgba(205,197,191,0.8);
            position: absolute;
            top: 0;
            bottom: 0;
            left: 0;
            right: 0;
            margin: auto;
            padding:0;
        }
        body {
            background-image: url("img/dm.jpg");
            /*整个图片作为背景,不够自动拉伸*/
            background-size: cover;
        }
    </style>
</head>
<body>
    <form id="form1" runat="server">
        <div class="container mt-3">
            <asp:ScriptManager ID="ScriptManager1" runat="server">
            </asp:ScriptManager>
            <asp:UpdatePanel ID="UpdatePanel1" runat="server">
                <ContentTemplate>
                    <table class="table all">
                        <tr>
                            <td class="table-primary display-3 text-center text-primary" colspan="3">登录界面</td>
                        </tr>
                        <tr>
                            <td>账户</td>
                            <td>
                                <asp:TextBox ID="userName" runat="server"></asp:TextBox>
                            </td>
                            <td>
                                <asp:RequiredFieldValidator ID="rfv_useName" runat="server" ControlToValidate="userName" Display="Dynamic" ErrorMessage="RequiredFieldValidator" ForeColor="Red">账户不可为空</asp:RequiredFieldValidator>
                                <asp:RegularExpressionValidator ID="rev_userName" runat="server" ControlToValidate="userName" Display="Dynamic" ErrorMessage="RegularExpressionValidator" ForeColor="Red" ValidationExpression="\w{5,13}">您输入的账户异常(5-12)</asp:RegularExpressionValidator>
                            </td>
                        </tr>
                        <tr>
                            <td class="auto-style2">密码</td>
                            <td class="auto-style2">
                                <asp:TextBox ID="userPwd" runat="server"></asp:TextBox>
                            </td>
                            <td class="auto-style2">
                                <asp:RequiredFieldValidator ID="rfv_userPwd" runat="server" ControlToValidate="userPwd" Display="Dynamic" ErrorMessage="RequiredFieldValidator" ForeColor="Red">密码不可为空</asp:RequiredFieldValidator>
                                <asp:RegularExpressionValidator ID="rev_userPwd" runat="server" ControlToValidate="userPwd" Display="Dynamic" ErrorMessage="RegularExpressionValidator" ForeColor="Red" ValidationExpression="\w{8,13}">您输入的密码异常(8)</asp:RegularExpressionValidator>
                            </td>
                        </tr>
                        <tr>
                            <td>
                                <asp:Button ID="btn_sub" runat="server" class="btn btn-primary" OnClick="btn_sub_Click" Text="登录" />
                            </td>
                            <td>
                                <asp:Button ID="btn_reset" runat="server" class="btn btn-secondary" OnClick="btn_reset_Click" Text="重置" />
                            </td>
                            <td>&nbsp;</td>
                        </tr>
                    </table>
                </ContentTemplate>
            </asp:UpdatePanel>
        </div>
    </form>
  
</body>
</html>

六.效果

会员注册界面:
在这里插入图片描述
当我们输入的用户名存在于数据库中,则提示:
在这里插入图片描述
用户名密码无误,则提示:
在这里插入图片描述
在点击确认后,系统跳转至登录界面(login_new.aspx):
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ASP.net 简单注册界面 的相关文章

  • ros先订阅后发布 无法收到消息的解决办法

    现象 今天遇到的问题是 使用的是Ros1 在先订阅后发布时 会导致订阅者无法收到订阅的消息 除非在发布者发布后重新订阅 思考 以前使用的是Ros2似乎并不关心订阅和发布的先后顺序 nbsp 似乎都可以收到消息 nbsp nbsp 这个问题后
  • C/C++中关于struct和class类的区别

    struct和class的主要的区别在于两者默认的访问权限有所不同 在不设置类中的成员属性和成员方法的权限时 xff0c struct默认的访问权限是公共权限 xff0c class默认的访问权限是私有权限 补充 xff1a 成员属性和成员
  • C++中STL容器的主要使用及含义

    1 stack栈容器的使用 假如栈中存放的是字符串 xff0c 我们做如下定义 xff1a stack lt string gt ss 设该变量名为ss 其主要用法如下 xff1a ss push a 存入栈中元素a ss top 读取栈顶
  • 电赛备赛记录第一篇(控制部分)

    2022 5 25 九校联赛备赛阶段第一天 联赛小车系统沿用去年国赛使用的树莓派驱动底板与外设 整车情况良好 xff0c 摄像头通信 连接均正常 xff0c 现已拼装完整 复产复工的初步成果为 xff1a 小车可以实现开机自启动的程序运行
  • 数据结构——栈详解

    1 栈 Stack 是一种线性存储结构 xff0c 它具有如下特点 xff1a xff08 1 xff09 栈中的数据元素遵守 先进后出 34 First In Last Out 的原则 xff0c 简称FILO结构 xff08 后进先出的
  • 双目相机标定

    一 运行环境 opencv2 windows vs 二 图像获取 分割 保存 参考博客opencv打开双目摄像头 图像切割保存 scutqq的博客 CSDN博客 双目图像分割 include amp lt opencv2 core core
  • uart1接收不定长度数据和发送:STM32 HAL库串口+DMA+IDLE空闲中断

    DMA增加 xff1a usart1 gpio 默认即可 usart1中断必须打开 在 STM32 中 USART 发送接收有三种基本方式 xff0c 轮询 中断和 DMA 1 轮询方式为堵塞模式 xff0c 使用超时管理机制 它每次接收一
  • 串口、网口等自定义通信协议的问题

    自定义通信协议的问题 一 串口1 通信分为网络通信和串口通信2 协议格式3 协议设计4 代码实现 二 网口1 TCP粘包与拆包 包的划分 出现TCP粘包的原因 粘包与拆包的几种情况 常见的粘包与拆包解决方案 2 为什么UDP没有粘包 xff
  • 如何理解奇偶校验位?

    奇偶校验位提供对传输数据的简单错误 xff08 奇偶校验 xff09 检查 此表描述奇偶校验的类型 奇偶校验类型 xff1a Even 描述 xff1a 数据位加上奇偶校验位产生偶数个1 xfffc 奇偶校验类型 xff1a Mark 描述
  • C语言----隐藏代码文件

    在C语言中 xff0c 常用的文件主要是后缀为 c的源文件以及后缀名为 h的头文件 我们通常使用头文件对函数进行声明 xff0c 使用源文件对具体的函数进行实现 有些时候会由于各种原因需要将函数的功能交给别人使用 xff0c 但是又不想将具
  • c++入门系列(三)之头文件

    1 什么是头文件 xff1f 在C语言家族程序中 xff0c 头文件被大量使用 一般而言 xff0c 每个C 43 43 C程序通常由头文件和定义文件组成 头文件作为一种包含功能的函数 数据接口声明的载体文件 xff0c 主要用于保存程序的
  • std::atomic_thread_fence

    在原子变量的存取上应用不同的memory order可以实现不同的内存序来达到数据同步的目的 xff0c 而在C 43 43 11及之后的标准里 xff0c 除了利用原子操作指定内存序 xff0c 还定义了单独使用 内存栅栏 xff08 s
  • 【数据结构】【期末复习】知识点总结

    算法 线性表 概念明晰 xff1a 随机存取 顺序存取 随机存储和顺序存储 随机存取 顺序存取 随机存储和顺序存储这四个概念是完全不一样的 xff0c 切不可将之混淆 很多人包括我可能认为随机存取就是随机存储 xff0c 顺序存取就是顺序存
  • 【单片机学习】51单片机【定时/计数器】,详细介绍

    51单片机学习 一 先知先会1 CPU时序的有关知识1 1 周期换算2 在学习定时器之前需要明白的3 定时 计数器的工作原理4 51单片机定时器结构 二 定时 计数器的控制1 工作方式寄存器TMOD2 控制寄存器TCON3 定时 计数器的工
  • 【跟着江科大学Stm32】GPIO_LED_流水灯_蜂鸣器

    只要坚持下来了 xff0c 一定会有收获 xff01 一 LED闪烁 span class token macro property span class token directive hash span span class token
  • STM32F103C8T6 PWM驱动舵机(SG90)

    小知识 xff1a 同一个定时器 xff0c 不同通道输出不同输出PWM的特点 对于同一个定时器的不同通道输出PWM xff0c 因为它们是共用一个计数器的 xff0c 所以频率必须一样 xff0c 而占空比由各自的CCR决定 xff0c
  • STM32 PWM周期与频率的计算

    文章目录 STM32 PWM周期与频率的计算频率的计算占空比的计算笔记仅供自学 xff0c 用来回看复习 xff0c 不一定适合你 xff0c 如有错误请指出 STM32 PWM周期与频率的计算 TIM TimeBaseInitTypeDe
  • STM32F103C8T6 实现舵机与电机的控制 2个定时器输出不同频率的PWM

    智能小家居 舵机开门 xff0c 电机做风扇 or 拉窗帘 呼吸灯做提示 xff0c 小OLED屏幕显示当前状态 文章目录 直接上代码main cpwm hpwm cservo hservo cmotor hmotor c笔记仅供自学 xf
  • 【学习记录】Tpro遥控器_暂时取消Tpro的控制权(简易)

    文章目录 按照如下图示配置1 设置好 96 逻辑开关 96 2 选择执行该 96 逻辑开关指令 96 的 96 通道 96 3 配置成功附 xff1a 继电器与R88的接法 按照如下图示配置 1 设置好逻辑开关 2 选择执行该逻辑开关指令的
  • 【Linux】gcc编译工具,断点的设置,gdb调试

    文章目录 注意1 在gcc编译过程中一定要加入选项 96 g 96 xff1b 2 只有在代码处于 96 运行 96 中在 96 暂停 96 状态时才能查看变量值 xff1b 3 设置断点后 xff0c 程序在指定行之前停止 总结主要内容1

随机推荐

  • 【Linux】信号量操作函数

    文章目录 二 实验原理1 semget 函数函数作用 xff1a 参数意义 xff1a 例子 xff1a 2 semop 函数函数作用 xff1a 参数意义 xff1a struct sembuf 结构体定义如下例子 xff1a 再来个完整
  • 【Linux】# 2022 Linux 笔试主要内容 MJ_University

    2022 Linux 笔试主要内容 看前须知道 带 的都是老师复习课上提到的内容 xff0c 但不代表说一定会考哦 xff01 选择题 xff08 20分 xff09 填空题 xff08 20分 xff09 判断题 xff08 10分 xf
  • Ubuntu18.04安装AX210驱动

    Linux Support for Intel Wireless Adapters 从官网可以看到AX210支持的内核版本是5 10 43 如果要在低于5 10的内核版本上安装AX210的驱动的话 xff0c 需要安装以下方法操作 xff1
  • 【Linux】实验四 进程信号通信

    文章目录 一 实验目的二 实验内容三 实验原理1 信号3 1 1 信号的基本概念3 1 2 信号的发送 2 所涉及的系统函数调用3 2 1 fork 3 2 2 kill This is my question 3 2 3 signal 代
  • 报错.SO文件找不到

    此报错大多数可以通过设置环境变量解决 原因 xff1a 当执行函数动态链接 so时 xff0c 此文件不在缺省目录下 lib and usr lib 里 缺省 61 61 默认 解决方案 xff1a 1 find name so文件名 2
  • 头文件(.h) 和实现文件(.cpp)区别

    简单讲 xff0c 一个Package就是由同名的 h和 cpp文件组成 当然可以少其中任意一个文件 xff1a 只有 h文件的Package可以是接口或模板 template 的定义 xff1b 只有 cpp文件的Package可以是一个
  • 坚持学习100天:STL(头大的英文,一个模板库,非得写得我看不懂)

    前言 Hello 我是修齊 学习C 43 43 的第一百零一十八天 18是个美好的数字 xff0c 18岁刚刚好 xff0c 28岁也要用心学习 在这里记录一些学习的东西和学习的心情 内容主要是一些自己学习整理的小笔记 一 指针与引用 1
  • Ubuntu20.04以及ROS系统的安装(避坑指南)

    一 Ubuntu20 04的安装 暑期在我导那里确认好研究方向后 xff0c 一个人摸爬滚打走来确实走了不少弯路 xff0c 遂决定写下这篇文章来帮助有需要的朋友来避坑 本次安装是通过VMware来创建一台虚拟机进行后续操作 xff0c 之
  • Rplidar A2单线雷达实现Cartographer建图

    首先安装rplidar2 xff0c 在工作空间src目录下git clone xff0c catkin make编译后即可使用了 git clone https github com robopeak rplidar ros git 在使
  • 解决Ubuntu非root用户登录时,无法打开Firefox浏览器

    在使用Ubuntu操作系统时 xff0c 创建了一个普通用户 xff0c 登录该用户后发现无法打开Firefox浏览器 xff0c 进行如下步骤可解决问题 提示 Your Firefox profile cannot be loaded I
  • 【C语言】 链表 超详细解析

    目录 一 xff1a 静态存储和动态存储 二 xff1a 存储类别 三 xff1a malloc函数 四 xff1a free函数 五 xff1a 内存初始化函数memset 六 xff1a calloc函数 七 xff1a realloc
  • 2.stm32freeRTOS---创建一个任务

    文章目录 前言一 创建一个任务需要注意哪些 xff1f 1 任务创建函数xTaskCreate2 代码分析 二 动态 静态分配1 动态分配2 静态分配 xff1a 三 删除任务四 一个函数创建两个任务总结 前言 上一次是初步接触实时系统 x
  • 世界上最详细的Linux C udp实现文件传输

    最重要的是掌握UDP的基本概念和使用 UDP h span class token macro property span class token directive hash span span class token directive
  • LidarPointCloud保存PCD文件的方法

    在牵扯到Lidar点云数据相关的开发时 难免需要将LidarPointCloud数据转为PCD文件 来查看点云效果 本文介绍两种办法 1 写文件的方法 根据PCD文件的协议 本样例中使用的数据类型为ara lidar LidarPointC
  • SSD算法解析

    目标检测算法主要分为两类 xff1a Two stage方法 xff1a 如R CNN系列算法 xff0c 主要思路就是通过Selective Search或者CNN网络产生一系列的稀疏矩阵的候选区域 xff0c 然后对这些候选区域进行分类
  • Oracle获取日期&天数

    一 获取当年所有日期 span class token comment select from span span class token keyword select span trunc span class token punctua
  • Oracle where if

    一 where case when Oracle where不能如其他sql直接添加if逻辑 只能使用case when span class token keyword select span span class token opera
  • ASP.net GridView控件(删除/更新功能)

    一 说明 部分代码的运用放在以往的教程中 本部分只讲解删除 更新功能 二 前端 我们在其控件上添加事件 红色为行删除事件 绿色为行更新事件 双击后 即可在后台自动生成对应的方法体 其代码显示 lt 64 Page Language 61 3
  • ASP.net 简单登录界面

    一 说明 此文是小白在学习张晨光老师的视频教学 lt lt Asp Net WEB服务器编程技术 gt gt 中做的学习笔记 一些知识点也是跟着教程走的 大家也可以去老师的主页去学习 谢谢大家 这一篇要练习的是 如下课程的代码 新建项目 因
  • ASP.net 简单注册界面

    一 说明 此文是小白在学习张晨光老师的视频教学 lt lt Asp Net WEB服务器编程技术 gt gt 中做的学习笔记 一些知识点也是跟着教程走的 大家也可以去老师的主页去学习 谢谢大家 这一篇要练习的是 如下课程的代码 先新建img