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

article/2025/9/22 0:37:17
   .net的B/S架构开发主要是MVC和webform的开发,因为WebForm是微软开发的一款产品,它将用户的请求和响应都封装为控件。让开发者认为自己是在操作一个windows界面(和winform也是差不多的)。极大地提高了开发效率。而MVC是由视图(view),控制器(controller),模型层三部分组成。所以它也是同时提供了对 HTML、CSS 和 JavaScript 的完全控制。两者算是各有千秋,社会上都有着各种不一样的看法,有的人认为MVC比较好,也有人认为用webform开发比较好。今天也是给大家带来了webform的最基础的整删改查。

这是一张关于添加案例图
在这里插入图片描述
第一步:搭建数据库,数据库的代码我已经写到了下面
在这里插入图片描述

CREATE DATABASE KUBLL
USE KUBLLCREATE TABLE COUNTRY          --国家表
(CID INT PRIMARY KEY IDENTITY,GUOJIA VARCHAR(50)
)CREATE TABLE BIAO            --景点表
(ID INT PRIMARY KEY IDENTITY,NAME VARCHAR(50),QUYU VARCHAR(20),PIAOJIA INT,COID INT FOREIGN KEY REFERENCES COUNTRY(CID),MIAOSHU VARCHAR(MAX),ZT VARCHAR(20)
)

新建项目
在这里插入图片描述
搭建三层框架
在这里插入图片描述
添加引用,DAL层(数据访问层)引用MODER层(模型层),BLL层(业务逻辑层)引用DAL层和MODER层,而我自己建的这个项目生成的这个xinjian其实是UI层(界面层),他是可以引用BLL层和MODER层

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
再到各个层的命名空间上面引用
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
怎么去写MODER层(模型层)根据数据库的字段去写
在这里插入图片描述
接下来就是去写DAL层(数据访问层)拉一个DBHelper,下面是我的一个DBHelper的代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.SqlClient;
using System.Data;
using System.Reflection;
using System.Net;
using System.Net.Sockets;namespace DAL
{public class DBHelper{private SqlConnection conn = null;/// <summary>/// 构造函数/// </summary>public DBHelper(){if (conn == null){conn = new SqlConnection("Data Source=.;Initial Catalog=MVCWeek02;Integrated Security=True");}}/// <summary>/// 返回DataTable查询结果/// </summary>/// <param name="sql"></param>/// <param name="par"></param>/// <returns></returns>public DataTable GetTable(string sql, SqlParameter[] par = null){try{SqlCommand com = new SqlCommand(sql, conn);if (par != null){com.Parameters.AddRange(par);}SqlDataAdapter ada = new SqlDataAdapter(com);DataTable dt = new DataTable();ada.Fill(dt);ada.Dispose();if (conn.State == ConnectionState.Open){this.Close();}return dt;}catch (Exception ex){if (conn.State == ConnectionState.Open){this.Close();}throw;}}/// <summary>/// 返回List查询结果/// </summary>/// <param name="sql"></param>/// <param name="par"></param>/// <returns></returns>public List<T> GetToList<T>(string sql, SqlParameter[] par = null){List<T> li = DataTableToList<T>(GetTable(sql));return li;}/// <summary>/// 返回查询结果首行首列/// </summary>/// <param name="sql"></param>/// <param name="par"></param>/// <returns></returns>public object ExecuteScalar(string sql, SqlParameter[] par = null){try{this.Open();SqlCommand com = new SqlCommand(sql, conn);if (par != null){com.Parameters.AddRange(par);}return com.ExecuteScalar();}catch (Exception ex){this.Close();throw;}}/// <summary>/// 返回执行结果受影响行数/// </summary>/// <param name="sql"></param>/// <param name="par"></param>/// <returns></returns>public int ExecuteNonQuery(string sql, SqlParameter[] par = null){try{this.Open();SqlCommand com = new SqlCommand(sql,conn);if (par != null){com.Parameters.AddRange(par);}return com.ExecuteNonQuery();}catch (Exception ex){this.Close();throw;}}/// <summary>/// Table转list集合/// </summary>/// <param name="dt"></param>/// <returns></returns>private static List<T> DataTableToList<T>(DataTable dt){//初始化值List<T> result = new List<T>();for (int i = 0; i < dt.Rows.Count; i++){T _t = (T)Activator.CreateInstance(typeof(T));PropertyInfo[] propertys = _t.GetType().GetProperties();foreach (PropertyInfo pro in propertys){for (int j = 0; j < dt.Columns.Count; j++){if (pro.Name.Equals(dt.Columns[j].ColumnName)){if (dt.Rows[i][j] != DBNull.Value){pro.SetValue(_t, dt.Rows[i][j], null);}else{pro.SetValue(_t, null, null);}break;}}}result.Add(_t);}return result;}/// <summary>/// 打开数据库链接/// </summary>private void Open(){if (conn.State != ConnectionState.Open){conn.Open();}}/// <summary>/// 关闭数据库链接/// </summary>private void Close(){if (conn.State != ConnectionState.Closed){conn.Dispose();}}}
}

改一下数据库的名字
在这里插入图片描述
实例化DBHelper
在这里插入图片描述
创建添加方法,里面写上SQL添加在语句
在这里插入图片描述
再返回到数据库中给国家表添加一些值
在这里插入图片描述
在DAL层中给国家表创建一个查询所有数据的方法
在这里插入图片描述
BLL:先实例化DAL层,再到DAL层把所有的方法复制到BLL层中
在这里插入图片描述
然后就是到界面层去添加web窗体搭建界面
在这里插入图片描述
配置完就是这样的
在这里插入图片描述
双击按钮进入后台
在这里插入图片描述
在这里插入图片描述
我们就是要在这里去写后台代码它和MVC的控制器作用是差不多的,先来绑定下拉
在这里插入图片描述
给绑定下拉附上默认值
在这里插入图片描述

通过后台进行传值
在这里插入图片描述
后台已经写好了,现在运行一下看看效果
在这里插入图片描述
在这里插入图片描述
这个时候我们可以去数据库中查看详情
在这里插入图片描述


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

相关文章

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;所以…

Trie 字典树 详解

&#x1f60a; | Powered By HeartFireY | Tire Algorithm 一、字典树 1.字典树简介 字典树&#xff0c;英文名Trie&#xff0c;如其名&#xff1a;就是一棵像字典一样的树。 我们首先通过一张图来理解字典树的结构&#xff1a; 我们假定结点的顺序按照图中给定的顺序进行编…

Web前端面试题汇总(持续更新...)

H5 的新特性有哪些&#xff1f;C3 的新特性有哪些&#xff1f; H5 新特性 拖拽释放(Drap and drop) API ondrop自定义属性 data-id语义化更好的内容标签(header,nav,footer ,aside, article, section)音频 ,视频(audio, video) 如果浏览器不支持自动播放怎么办?在属性中添加…

Web前端面试题(全锦集)

1 第一部分&#xff1a; 聪明的猴子都在看右下角目录 点击查看更多资源 前端基础(HTML CSS JS基础) 1. 怎么让一个不定宽高的 DIV&#xff0c;垂直水平居中&#xff1f; 答&#xff1a;1.使用 CSS 方法&#xff1a; 父盒子设置&#xff1a;display&#xff1a;table…

web前端开发面试题(一)

一、html部分 1.1 link和import 区别如下&#xff1a; 1.1.1从属关系区别 import是 CSS 提供的语法规则&#xff0c;只有导入样式表的作用&#xff1b;link是HTML提供的标签&#xff0c;不仅可以加载 CSS 文件&#xff0c;还可以定义 RSS、rel 连接属性等。 2.加载顺序区别…

Web常见前端面试题及答案

前端技术导航大全 1、盒子模型 盒子模型包括四部分&#xff1a;内容&#xff08;content&#xff09;、填充&#xff08;padding&#xff09;、边框&#xff08;border&#xff09;、边界&#xff08;margin&#xff09; 盒子模型可以分为两种&#xff1a;IE盒子模型和W3C标准…

web前端开发面试题(七)

前端面试题第七天 一、HTML 部分 1.1 iframe框架都有哪些优缺点 在讲iframe框架之前 先聊聊iframe吧 定义&#xff1a;iframe是HTML标签&#xff0c;作用是文档中的文档&#xff0c;或者浮动的框架(FRAME)。iframe元素会创建包含另外一个文档的内联框架&#xff08;即行内框…

2020 web前端面试题及答案大全

css相关 1. 万能居中 1.margin: 0 auto;水平 2.text-align: center;水平 3.行高&#xff0c;垂直 4.表格&#xff0c;center,middle&#xff1b;水平垂直 5.display:table-cell&#xff1b;模拟表格&#xff0c;all 6.绝对定位&#xff0c;50%减自身宽高 7.绝对定位&#xff…

初级web前端面试题

文章目录 一、JS1、js基本类型和引用类型2、如何判断js数据类型3、js 拷贝4、事件处理机制5、原型和原型链6、什么是闭包7、事件循环机制&#xff08;event loop&#xff09;8、前端模块化9、es6新增特性1.let代替var关键字&#xff1b;2.const3.箭头函数4.字符串模板 &#xf…

【面试】web前端经典面试题试题及答案(持续更新)-html/css

html/ css css盒模型、BFC、css浮动、css经典布局、css兼容、css hack、html/ css基础 css盒模型BFCcss浮动css经典布局自适应css兼容css hackhtml/ css基础css3 transformcss实战图片 #mermaid-svg-vRGce0x6PUoXllsG .label{font-family:trebuchet ms, verdana, arial;font-fa…