ASP.NET(二)--WebForm框架

article/2025/9/21 23:38:33

WebForm框架

  • WebForm框架
    • WebForm介绍
    • WebForm窗体框架
    • 事件驱动开发简单应用
    • ASP.NET程序开发过程
    • 网页生成过程的分析
    • 案例

WebForm框架

WebForm是微软推出的一款为了吸引更多的其他开发者能够快速入门到.NET技术中的一个框架,让开发人员感觉使用.NET技术进行BS开发和使用.NET技术进行CS开发一样简单快速。

微软的想法:以后程序员开发网站项目不需要先学习HTML+CSS就能够直接入门BS,因此将HTML标签封装成类似于Winfrom中的控件,然后程序员可以在开发BS项目时使用类似于开发CS项目一样使用“拖控件”的方式快速解决界面问题

但是这个发展途径对于现实开发非常鸡肋,导致只要项目稍微复杂,程序的执行效率很低,目前为止微软自己也逐渐放弃这个框架。

WebForm介绍

  1. WebForm窗体的后缀名.aspx

  2. WebForm的组成

    1. .aspx文件类似于Winform中的设计界面
    2. .aspx.cs文件类似于Winform中的后台C#类
    3. .aspx.designer.cs文件类似于Winform中的designer.cs文件
  3. Web程序中的配置文件默认名为:Web.config文件

    CS程序中的配置文件默认名为:App.config文件

WebForm窗体框架

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="index.aspx.cs" Inherits="ASP.NETWebDemo.index" %><!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>
</head>
<body><form id="form1" runat="server"><div></div></form>
</body>
</html>

@page指令:每个aspx页面只能有一个@page指令,@page指令是关联后台的CS文件

html标签:指的是这个aspx页面的设计区域类似于普通的HTML文件,只不过这些标签中多了一个属性runat=“server”。

标签原本应该运行在客户端浏览器中,而带有这个属性的标签全都是运行在服务器上的标签。

微软重点就是使用这个属性将HTML标签转成服务器标签

Webform中自动携带一个form表单,并且这个form表单的runat属性已经被默认设置,而且form表单中嵌套了一个div标签,其目的就是希望我们设计页面时将所有的标签全部在这个form表单中去设计,这样当这个表单在服务器中运行时,其内部的所有标签也会在服务器中运行

事件驱动开发简单应用

使用Web窗体和使用Winform窗体开发方式非常相似

使用“控件+事件”方式实现计算器

拖出来的控件不是普通的HTML标签,而是< asp:>标签,这些标签理解为是微软封装好的标签,这些标签是在服务器端执行的标签,而不是发送给浏览器客户端的标签

<!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>
</head>
<body><form id="form1" runat="server"><div><asp:TextBox ID="num1" runat="server"></asp:TextBox>+<asp:TextBox ID="num2" runat="server"></asp:TextBox>=<asp:TextBox ID="num3" runat="server"></asp:TextBox><asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="计算" /></div></form>
</body>
</html>

在这里插入图片描述
经过对比:在浏览器的页面中显示的标签依然是普通的html标签,可以理解为微软内部将HTML标签封装称为控件标签

在客户端中多了一些input标签,而且类型是“hidden”,这些hidden是隐藏域,

隐藏域的作用:

  1. 帮助表单收集和发送信息,便于后端处理数据。用户点击提交的时候,隐藏域的内容也一并提交给后台,但是用户是不可见的。
  2. 安全性:后端接收前端发来的数据,要对其身份进行确认,防止外来数据传入后端。通过验证value的值和后端数据库中name的值是否一致,来达到验证的效果。
  3. 对表单中的按钮添加隐藏域,告诉后端提交的是哪一个按钮。
  4. 对于网页中有多个表单元素form来说,多个form表单是无法一次提交的,但是表单之间又相互影响,所有通过添加隐藏域来连接表单。
  5. 隐藏数据:JS不支持全局变量,DNA有时候我们必须使用全局变量,就可以把值先隐藏在隐藏域中,这样值就不会丢失了。
  6. 对小窗口的弹出与关闭,在IE中不支持小窗口的相互调用,所以只能在其窗口中写一个哪个有,当小窗口可能到隐藏域的时候就会close。

ASP.NET程序开发过程

  1. 创建网站/Web应用程序–打开开发环境
  2. 编写页面—设计HTML页面
  3. 编写后台—使用C#或VB.NET编写后台交互代码
  4. 调用执行—编译代码并发布

ASP.NET开发中网站和Web应用程序的比较

相同点:

  1. 两者都可以开发Web项目
  2. 两者基于事件机制编写程序

不同点:

  1. Web应用程序在运行阶段不允许修改后台代码,网站在运行时可以随时修改后台代码,前台刷洗即可
  2. Web应用程序命名空间管理方便,而网站项目命名空间不好区分

一般开发大型项目都使用Web应用程序,目前VS中已经没有网站项目框架了

网页生成过程的分析

在这里插入图片描述

  1. 客户端点击提交按钮或者触发控件的事件
  2. 服务器端刷新整个页面
  3. 执行Page_Load事件
  4. 执行具体控件的事件并给页面控件赋值
  5. 重新生成新页面的HTML
  6. 使用Response对象返回包含新数据的html页面
  7. 浏览器看到刷新的页面

案例

创建一个WebForm页面,需求:页面中实现一个聊天的对话框,当点击按钮将txtBox1中的内容复制到txtBox2中。

    public partial class WebDemo1 : System.Web.UI.Page{protected void Page_Load(object sender, EventArgs e){txtBox1.Text = "请输入内容";}protected void btnRecive_Click(object sender, EventArgs e){txtBox2.Text = txtBox1.Text;}}

然而执行效果并非如此

从执行过程中发现,只要页面中访问的服务器文件还是当前页面那么,每次都会从这个页面的Page_Load事件开始,也可以理解为,Web项目中的文件每次都是新的开始。原因是因为代码是服务器代码和CS中的完全不一样。

服务器中的文件:因为不确定到底是哪个客户端进行访问的所以将每次访问都当做第一次访问,因此每次的访问都是从Load事件开始。

因此服务器才不管你这个请求到底是第一次打开连接的请求,还是点击页面中按钮发送过来的请求,服务器都会给你从Load事件开始。

解决方案:

要是能够搞清楚到底这次请求是通过URL地址第一次请求,还是点击页面中的请求按钮触发的请求就能解决

        protected void Page_Load(object sender, EventArgs e){if (!IsPostBack)//首次加载IsPostBack为false{txtBox1.Text = "请输入内容";}else//这是回发{//这里书写回发时处理的工作}}

http://chatgpt.dhexx.cn/article/RjVkq3qD.shtml

相关文章

winform webform 简单高效的UI界面框架

一、winform的界面框架设计&#xff08; james_lx&#xff09; 一直以来&#xff0c;我都在寻找WINFORM程序&#xff0c;简单高效的UI界面框架&#xff0c;终于&#xff0c;我领悟了。在此分享给和我一样使用C#而苦于界面设计的人。我的发现中&#xff0c;并没有加入什么其它的…

WebForm 基础学习

C/S 客户端应用程序&#xff08;Client/Server&#xff09; 客户端——服务器端 两种技术 WinForm WPF -- WPF开发于WinForm之后&#xff0c; --GUI 图形用户界面&#xff08;采用图形方式显示的计…

c#webform制作网页应用的思路login登录

一方面是有实际工作需要&#xff0c;一方面是想学点东西&#xff0c;制作一个webform的信息科工单登记查询网页&#xff0c;虽然目前还是很多bug&#xff0c;虽然代码基本都是复制的&#xff0c;但是慢慢的搭建成型。自己记录下思路&#xff0c;纯小白&#xff0c;可以说基本都…

<form>表单

1.form表单 <form>标签是表单是一个框架&#xff0c;其中主要包含<input>,<textarea>,<select>标签 1.1<input>标签 <input>标签首先是一个单标签 <input>标签的格式是<input type"" value"" name"&…

表单<form>

创建表单 <form> 标签用于创建供用户输入的 HTML 表单。 <form>标签的action属性的值指定了表单提交到服务器的地址。 <form> 元素包含一个或多个如下的表单元素&#xff1a; <input> <textarea> <button> <select> <option&g…

ASP.NET WebForm--简介

文章目录 ASP.NETASP.NET 模型HTTP请求处理过程HttpHandler ASP.NET ASP.NET基于.NET Framework的Web开发平台&#xff0c;不但吸收了ASP以前版本的最大优点并参照Java、VB语言的开发优势加入了许多新的特色&#xff0c;同时也修正了以前的ASP版本的运行错误。 ASP.NET就是属于…

WebForm

什么是ASP.NET ASP.NET指的是动态服务器页面(Active Server Pages),运行在IIS&#xff08;Internet Information Service)上&#xff0c;文件类似于HTML,后缀为.aspx. Classic ASP的局限性&#xff1a; 代码块必须放置在需要进行输出的位置 <html> <body style&qu…

ASP.NET(一)--WebForm简单介绍

WebForm B/S程序 浏览器服务应用程序&#xff0c;直接可以解释为网站类应用程序 静态网页与服务器技术 静态网页 以.html或以.htm为后缀的网页文件只能单纯的显示文本和图像无法和用户进行数据交互&#xff0c;无法根据用户的请求显示不同的网页内容(也就是无法和后台数据库…

关于webform的简单的基础操作 2.学会开发(一)

.net的B/S架构开发主要是MVC和webform的开发&#xff0c;因为WebForm是微软开发的一款产品&#xff0c;它将用户的请求和响应都封装为控件。让开发者认为自己是在操作一个windows界面&#xff08;和winform也是差不多的&#xff09;。极大地提高了开发效率。而MVC是由视图&…

35.Trie树:如何实现搜索引擎的搜索关键词提示功能

文章目录 1. 什么是“Trie树”&#xff1f;2. 如何实现一棵Trie树&#xff1f;3.Trie树真的很耗内存吗&#xff1f;4.Trie树与散列表、红黑树的比较5. 解答开篇 问题&#xff1a;搜索引擎的关键词的联想词是如何实现的&#xff1f; 1. 什么是“Trie树”&#xff1f; Trie树&a…

Trie树详解

什么是Trie树 Trie树又称字典树、单词查找树。是一种能够高效存储和查找字符串集合的数据结构。 可以快速的在集合中查询某个字符串 Trie树的本质就是利用字符串之间的公共前缀&#xff0c;将重复的前缀合并在一起 Trie的存储 Trie的存储形式就是构造成一个树形结构 比如我们以…

java trie_Trie树(字典树)的介绍及Java实现

简介 Trie树&#xff0c;又称为前缀树或字典树&#xff0c;是一种有序树&#xff0c;用于保存关联数组&#xff0c;其中的键通常是字符串。与二叉查找树不同&#xff0c;键不是直接保存在节点中&#xff0c;而是由节点在树中的位置决定。一个节点的所有子孙都有相同的前缀&…

Trie前缀树

Trie前缀树 简介 Trie (发音为 "try") 又经常叫前缀树&#xff0c;字典树等等&#xff0c;是一种树数据结构&#xff0c;用于检索字符串数据集中的键。 在计算机科学中&#xff0c;trie是一种有序树&#xff0c;用于保存关联数组&#xff0c;其中的键通常是字符串…

Trie树

Trie树 文章目录 Trie树Trie树介绍应用场景举例代码实现例题 Trie树介绍 字典树 又称单词查找树&#xff0c;Trie树&#xff0c;是一种树形结构&#xff0c;是一种哈希树的变种。典型应用是用于统计&#xff0c;排序和保存大量的字符串&#xff08;但不仅限于字符串&#xff…

trie 树

一、普通 t r i e \rm trie trie 树 t r i e \rm trie trie 树又称字典树、前缀树&#xff0c;它把很多单词放到一棵树上&#xff0c;使用空间去换时间。 LUOGU2580 于是他错误的点名开始了 Description \text{Description} Description 给定 n n n 个互不相同且只含小写字…

Trie

文章目录 应用替换其他数据结构字典表达术语索引 算法排序全文检索 实现Bitwise triesCompressing triesExternal memory trie About Me Trie ,也叫做 digital tree(数字树) 有时候也是 radix tree(基数树) 或者 prefix tree(前缀树) (因为他们可以通过前缀进行搜索) 是一种 se…

Trie(字典树/前缀树)

字典树/前缀树 Trie&#xff08;发音类似 “try”&#xff09;或者说 前缀树&#xff08;字典树&#xff09; 是一种树形数据结构&#xff0c;用于高效地存储和检索字符串数据集中的键。这一数据结构有相当多的应用情景&#xff0c;例如自动补完和拼写检查。主要思想是利用字符…

trie(字典树、前缀树)

trie&#xff08;字典树、前缀树&#xff09; 1. trie原理 原理 trie树&#xff0c;又被称为字典树、前缀树&#xff0c;是一种高效地存储和查找字符串集合的数据结构。一般来说&#xff0c;用到trie的题目中的字母要么全是小写字母&#xff0c;要么全是大写字母&#xff0c;要…

Trie详解

Trie&#xff0c;又名字典树、单词查找树&#xff0c;可以较高效地实现统计、排序和保存大量的字符串。 顾名思义&#xff0c;Trie是一个树状的结构&#xff0c;按照树型结构来存储字符串&#xff0c;显然是一种以空间换时间的方法。整体上理解和实现都不会很难。 下面是实现方…

Trie 简介

一、Trie简介 在计算机科学中&#xff0c;Trie&#xff0c;又称字典树、前缀树、单词查找树或键树&#xff0c;是一种树形结构&#xff0c;是一种哈希树的变种。典型应用是用于统计&#xff0c;排序和保存大量的字符串&#xff08;但不仅限于字符串&#xff09;&#xff0c;所以…