ASP.NET
ASP.NET相关
陆老师Peter
高校计算机专业教师、项目经理、软件研发负责人。
展开
-
href 什么读?
hrefhref是Hypertext Reference的缩写。意思是指定超链接目标的URL。href 属性的值可以是任何有效文档的相对或绝对URL,包括片段标识符和JavaScript代码段。怎么读:[ˈhaɪ.ɹef],有时 [χ̍.ˈɹef]。H refh ref赫尔夫hy-refher抚和瑞夫喝refhref 是一个个字母念的,因为基本上不用念,都直接说“链接”、“指向”。嗨Rai夫喝日呃佛哈尔夫href 念字母核ruai福像.原创 2021-05-20 11:08:27 · 7402 阅读 · 2 评论 -
多态和接口(11)——设计模式(4)——多态和接口知识点汇总
1、设计模式只有一种:多态,没别的了。模式就是多态的各种组合。2、一个类如果没写父类,那么它就会从object那里继承。3、在一个static成员中不能引用非static的成员。4、int是object的子类,但是int[]不是object[]数组的子类。Person是object的子类,但是Person[]不是object[]数组的子类。5、泛型:通俗的讲可以理解为一个动态的数...原创 2019-09-04 10:17:11 · 199 阅读 · 0 评论 -
多态和接口(10)——设计模式(3)——装饰者模式(1)——装饰者模式:数据加密提供者(非常难)
1、写入的时候将数据加密写入,读取的时候将数据解密读出。加密、解密代码可参考: https://blog.csdn.net/qq_34573534/article/details/1005306222、通过调试来理解调用过程和对象。3、数据加密提供者以装扮另外一个提供者的方式出现。数据加密提供者可以和其他提供者搭配使用,任意组合。5、这就是装饰者模式。这个程序理解了设计模式就掌握了。装...原创 2019-09-04 00:18:08 · 241 阅读 · 0 评论 -
多态和接口(8)——接口编程案例:配置提供者(SettingsProvider框架)。数据库配置提供者。FileSettingsProvider。提取数据库配置提供者抽象类
一、接口编程案例:配置提供者(SettingsProvider框架)1、FTP地址、用户名、密码要保存到一个地方,配置提供者就提供了一个保存、读取配置的一些类。2、数据配置提供者接口:public interface ISettingsProvider{ string this[string name] { get; set; }//以字符串类型读取、设置...原创 2019-09-03 23:15:24 · 146 阅读 · 0 评论 -
多态和接口(7)——Access操作步骤、.Net中访问Access
一、Access操作步骤1、新建Access文件的方法:文件→新建,右侧选择“空数据库”,选择mdb文件保存路径。在打开的设计器中“表”→“使用设计器创建表”。设计好表和数据类型后点击保存图标,在弹出的对话框中为表指定表名。2、拷贝连接字符串的方法:VS的数据连接中点右键“添加连接” ,数据源旁边的【更改】,选择“Access数据文件”,在新对话框中的“数据库文件名”中点击【浏览】,mdb...原创 2019-09-03 12:36:11 · 721 阅读 · 0 评论 -
多态和接口(6)——回首ADO.Net
1、SqlCommand cmd = new SqlCommand()SqlCommand cmd = conn.CreateCommand()IDbCommand cmd = conn.CreateCommand()第三种写法最好。SQLServer、Access(文件型数据库,连接字符串用VS“服务器资源管理器”生成)的Command分别是SqlCommand、OleDbComma...原创 2019-09-03 12:23:16 · 130 阅读 · 0 评论 -
多态和接口(5)——设计模式(2)——基于接口编程
一、基于接口编程1、变量(参数、返回值等)的类型能用父类就不要用子类,能用接口就不要用类,返回值、属性、参数等等,类型越靠近Object越好,尽量不要用具体的类型。只要返回的类型符合签名的要求,就能够随意控制返回的对象。如果将返回值设置为NotNullArrayList,有一点不想控制非空值了,就直接返回ArrayList就可以了。2、接口中的方法不能声明public、private等,因...原创 2019-09-03 12:07:14 · 232 阅读 · 1 评论 -
多态和接口(3)——设计模式(1)——方法override、CLR(Common Language Runtime 公共语言运行时)、CTS(Common Type System 公共语言系统)
1、多态就是设计模式!!!多态理解了设计模式就理解了。2、定义坐标类,坐标类默认继承Object的ToString()方法,没有自己的特色。3、override ToString()输出友好信息: public override string ToString() { return string.Format("({0},{1})",X,Y);...原创 2019-09-03 10:58:26 · 212 阅读 · 0 评论 -
.NET Standard(1)——.NET Standard是什么
值得一提的是微软还为BCL提出了一个标准,毕竟各式各样的平台,技术层出不穷,为了防止.NET在类库方面的碎片化,即提出了一套正式的 .NET API (.NET 的应用程序编程接口)规范,.NET Standard。正如上面CLS一样,.NET Standard就类似于这样的一个概念,无论是哪个托管框架,我们遵循这个标准,就能始终保持在BCL的统一性,即我不需要关心我是用的.NET Frame...原创 2019-06-09 00:46:24 · 2291 阅读 · 0 评论 -
三层架构(1)——MVC(2)——三层架构
复杂项目不能把SQL语句直接写到程序里,不模块化、难以维护,应该采用三层架构。当然不是所有公司都这么做,还是看公司习惯。Web开发中的三层架构也是同样的结构。模型层Model;数据访问层DAL(Data Access Layer);业务逻辑层BLL(business logic layer )。实体类就是Model;对数据进行操作的代码写在DAL中,一般就是SQL语句,DAL只有对数据的操作,...原创 2019-06-19 22:36:09 · 203 阅读 · 0 评论 -
计算机基础(8)——MVC(1)——win10(4)——Win7上的ASP.NET MVC3项目在Win10上运行的一个坑
先解释一下问题:我原来的电脑环境是Win7+VS2015,因为新换了个电脑环境变成Win10+VS2015了,所以就把原先的项目复制到新的机器上,那么问题来了,原先的一个项目在VS2015上打开竟然直接报错(注意:这里不是发布到IIS上,就是直接用VS中F5运行)。报的错很常见,但是一般的解决办法都不适用,解决可是废了老大劲儿了。 未能加载文件或程序集“System.Web.Helper...原创 2019-06-19 18:51:06 · 292 阅读 · 0 评论 -
多态和接口(2)——抽象类abstract(3)——常用系统接口:IDisposable 和 IEnumerable
1、using,实现了IDisposable接口的对象可以使用using进行资源声明,出了using的作用域以后自动调用Dispose方法。 Dispose和Close的区别:实现了IDisposable接口必须定义Dispose方法,但不一定有Close方法,很多Dispose的实现都是调用Close方法。SqlConnection Close以后还能重新Open,但是Dispose以后就不能再...原创 2019-09-03 00:22:02 · 118 阅读 · 0 评论 -
多态和接口(1)——抽象类abstract(1)——接口、接口和类的区别、接口和抽象类的区别(面试重点)
1、接口相当于没有方法实现的抽象类(但是它并不是一个类,而且接口里不能有方法)。public interface Flyable{ void Flay();}2、一个类只能继承自一个类,但是可以实现多个接口。3、一个抽象类中可以定义实现代码,也可以不定义。但是接口不能定义实现代码(哪怕方法中只是一个空的括号{},也是空实现)。4、接口的多态特性、类型转换、i...原创 2019-06-22 12:48:52 · 398 阅读 · 0 评论 -
多态和接口(9)——虚方法virtual(3)——接口与抽象类(常考)
1、公共的行为定义成接口(接口定义能做什么),然后公共的实现定义成抽象类。抽象类是实现的复用,接口定义的是公共行为的复用。2、抽象类可以给出方法的实现,也可以不给出(abstract);接口所定义的方法一定不能给出实现代码。接口只是定义能做什么,没法定义怎么做。3、一个类只能有一个父类,一个类可以实现多个接口。(非常重要的不同点)。4、同样是override的方法,virtual和ab...原创 2019-09-03 23:37:27 · 148 阅读 · 0 评论 -
多态和接口(4)——虚方法virtual(2)——virtual方法和abstract方法的区别(面试题)
1、virtual方法和abstract方法的区别:(面试题)(1)virtual方法子类可以override,也可以不override。但是如果子类不是抽象类(可以被new),那么父类定义的所有abstract成员子类都必须实现。(2)父类定义virtual方法的时候必须提供实现。父类定义abstract方法不能提供实现。(3)一个类如果有至少一个抽象成员,那么类必须是abstrac...原创 2019-09-03 11:14:38 · 237 阅读 · 0 评论 -
【C#】面向对象(17)——抽象类abstract(2)——虚方法virtual(1)——方法重写override(1)——知识点:虚方法,方法重写,抽象类,多态,接口
1、虚方法:使用virtual关键字修饰,使用virtual关键字修饰的方法在本类中必须有实现,哪怕是空的{}。虚方法存在的意义就是为了让子类重写。子类可以重写,也可以不重写。子类重写时使用override关键字。 Virtual写在返回类型的前面,即public virutal或virtual public。2、方法重写:只有用virtual、abstract、override修饰的方法在继...原创 2019-08-31 00:02:24 · 651 阅读 · 0 评论 -
线程和进程(3)——安全调用线程的步骤
1.声明方法。2.声明委托类型。3.创建委托对象。4.启动线程。5.在线程调用的方法里通过Control的Invoke方法执行委托。示例: public Form1() { InitializeComponent(); //TextBox.CheckForIllegal...原创 2019-08-28 00:31:54 · 123 阅读 · 0 评论 -
线程和进程(2)——.net中如何实现多线程
1、线程肯定也是要执行一段代码的。所以要产生一个线程,必须先为该线程写一个方法,这个方法中的代码就是该线程运行所要执行的代码。(找个人来做一件事情) 。2、线程启动时,通过委托调用该方法。委托的好处。(线程启动时,调用传过来的委托,委托就会执行相应的方法,实现线程执行方法)。3、产生一个线程的4步骤: 编写产生线程所要执行的方法。 引用System.Threading命名空...原创 2019-08-26 22:58:41 · 198 阅读 · 0 评论 -
线程和进程(1)——多线程,进程与线程
一、为什么要用多线程1、让计算机"同时"做多件事情,节约时间。2、后台运行程序,提高程序的运行效率,也不会使主界面出现无响应的情况。3、多线程可以让一个程序“同时”处理多个事情。4、计算机cpu大部分时间处于空闲状态,浪费了cpu资源。5、单线程带来的问题:就好象售货员在接待客户时做别的事情,客户就没人招待了一样。二、多线程图例三、进程与线程6、一个进程至少有一...原创 2019-08-26 22:47:27 · 142 阅读 · 0 评论 -
归递(1)——归递
1、递归就是函数自己调用自己。老和尚的故事。2、当递归调用层次过多的时候就会发生“StackOverflowException”异常,所以以后写程序如果遇到“StackOverflowException”异常,一般就是一个死的递归。递归都有一个递归的终止条件,就是什么时候不再递归了。3、只要程序报错“StackOverflowException”,一般就是程序中没有“递归终止条件”。递归...原创 2019-07-21 13:25:51 · 559 阅读 · 0 评论 -
树TreeView(3)——树TreeView实战:话术开发
一、话术脚本概念1、话术脚本、知识库、FAQ:坐席对着念给客户的东西。好记性不如破电脑。2、要素:标题、正文。二、话术管理设计1、开发步骤:(1)设计数据库表;(2)设计取得各级数据的方法;(3)设计界面,将表中的数据加载到TreeView中,为了能够在点击节点的时候将节点的正文填充到文本框中,因此将每个节点对应的Model放到节点的Tag中;(4)设计话术的添...原创 2019-07-23 02:00:58 · 236 阅读 · 0 评论 -
树TreeView(2)——树TreeView在数据库中的存储
树是有级次的,数据库表是二维的,怎么用二维的表储存级次的树就是一个难题。例如:如何从数据库取得所有省节点? 如何从数据库取得所有市节点?案例:论坛版块列表:可以用select * from t where FatherID=2获得“动漫特区”的所有子节点,所以不需要再建立一个“子节点”的字段。...原创 2019-07-21 13:46:32 · 603 阅读 · 0 评论 -
树TreeView(1)——WinForm开发(12)——树状结构数据、TreeView控件基础
一、树状结构数据:二、TreeView控件基础:目标:话术管理功能点的技术基础。树状结构在数据库中的存储,是重难点技术。如鹏网项目中还会涉及到树的东西。动态添加节点(VS编辑界面中有增加根节点、增加子节点两个按钮):(1)向根节点下增加子节点:treeView.Nodes.Add,它的返回值就是创建的节点对象。treeView.Nodes代表根节点的所有子节点。(2)向...原创 2019-07-20 17:15:36 · 953 阅读 · 0 评论 -
集合(7)——Dictionary字典(2)——C#中的拼音检索
1、为什么要用拼音检索?坐席只能根据客户的语言进行判断,无法准确写对姓名。2、Visual Studio International Pack3、练习:根据文档学习使用方法。发下安装包自己探索。目标:输出一个汉字的拼音。4、CHS:Simplifed Chinese,简体中文。CHT:Traditional Chinese :繁体中文。5、两种实现方式:实时检索(速度慢);增加一个...原创 2019-07-16 21:00:46 · 548 阅读 · 0 评论 -
集合(2)——Dictionary字典(1)——Dictionary(字典)→ Hashtable等集合类
一、Dictionary(字典)→ Hashtable1、Key-value Pair 键值对。成语不可以重复,但是解释可以重复。2、Dictionary<K,V>: K即Key是键,V即value是值。(1)Add:添加,如果重复,则报错。(2)索引器方式设置值:可以重复设置,即使不存在也没关系,如果重复则新数据覆盖旧数据。(3)ContainsKey,判...原创 2019-06-22 21:37:52 · 239 阅读 · 0 评论 -
Attribute标记(2)——自定义Attribute
1、Attribute都从System. Attribute类继承,类名一般以Attribute结尾。2、创建构造函数。3、标记类的用途—AttributeUsage标记(标记的标记):AttributeTargets:可以添加到哪些成员上。AllowMultiple:是否允许在一个成员上标记这个Attribute的多个实例,默认false。标注在Attribute类的类名上方。4、A...原创 2019-09-08 10:46:40 · 445 阅读 · 0 评论 -
Attribute标记(1)——Attribute
1、Attribute有很多种翻译:属性(容易和类的属性(Property)混淆)、标记、特性、注解等。2、Attribute用来对类、属性、方法等标注额外的信息,贴一个标签。Attribute是一个类。3、Attribute的格式:[Attribute类名(构造函数参数)],如果没有参数可以简写为[Attribute类名]4、常用内置的Attribute:[Obsolete("推...原创 2019-09-08 10:42:32 · 1025 阅读 · 0 评论 -
static静态方法(1)——c#静态方法怎么调用非静态方法
一般情况下Sta()是不能调用NoSta()的,但是可以通过增加一个静态成员来调用。class B{ private static B instance=new B(); public static void Sta()//静态 { instance.NoSta();//正确 } public void NoSta()//非静态 ...原创 2019-10-11 11:25:34 · 3986 阅读 · 0 评论 -
产生随机数(1)——C#生成随机数的三种方法
随机数的定义为:产生的所有数字毫无关系.在实际应用中很多地方会用到随机数,比如需要生成唯一的订单号.在C#中获取随机数有三种方法:一.Random 类Random类默认的无参构造函数可以根据当前系统时钟为种子,进行一系列算法得出要求范围内的伪随机数. 1 2 Random rd =newRandom(); inti = r...转载 2019-10-12 17:26:44 · 1219 阅读 · 0 评论 -
LINQ(7)——Lambda表达式(2)——LINQ常用lambda扩展方法
1. 以where为例。2. linq的用法最终是编译成lambda用法。原创 2019-08-23 13:15:52 · 174 阅读 · 0 评论 -
委托和事件(14)——Lambda表达式(1)——Lambda
ProcessStringDelegate p = (s) => { Console.WriteLine(s); };lambda方式使用Filter 委托,非常漂亮:IEnumerable<int> values2 = Filter(values, i=>i>0);Lambda语法详解:s为参数列表,不需要标注类型,因为变量声明中类型已经说明了。=>...原创 2019-08-22 15:13:02 · 196 阅读 · 0 评论 -
空值问题(4)——C#中关于空值判断最常用的两行代码
string fileInstructions;1、如果为空:if(string.IsNullOrEmpty(fileInstructions))2、如果不为空:if(!string.IsNullOrEmpty(fileInstructions))原创 2019-10-17 10:23:48 · 281 阅读 · 0 评论 -
空值问题(3)——C# 字符串为空判断
一、字符串字符串为空情况有4种,如下: string str1 = ""; string str2 = " "; string str3 = String.Empty; string str4 = null;二、判断方法C#判断字符串的string类的方法有2个,定义如下: ...转载 2019-10-10 12:07:09 · 493 阅读 · 0 评论 -
SQL Server(7)——空值问题(2)——C#中的null
在C#中,int、bool、DateTime 等值类型的数据不可以为 null 。值类型的特点:值传递。string、person 等属于引用类型,其值可以为 null 。值类型和引用类型的区别是:传递数据时,值类型是值传递(拷贝传递),可以为 null ;引用类型是引用传递,不可以为 null 。------------------------------------------...原创 2019-07-10 22:54:29 · 711 阅读 · 0 评论 -
空值问题(1)——C#中的HasValue 判断可空类型是否有值
HasValue返回的结果是bool类型。只可以用来判断,判断可空类型是否有除了null以外的值,有则返回true,否则就返回 false 。1. int? testValue1;testValue=2;testValue=null如果testValue的值为整数,则结果为true ,反之则为false 。引申:NULL 和空的区别:NULL不占用任何...原创 2019-07-10 17:58:11 · 10090 阅读 · 0 评论 -
日期时间(2)——C#获取当前日期时间
我们可以通过使用DataTime这个类来获取当前的时间。通过调用类中的各种方法我们可以获取不同的时间:如:日期(2008-09-04)、时间(12:12:12)、日期+时间(2008-09-04 12:11:10)等。//获取日期+时间DateTime.Now.ToString(); // 2008-9-4 20:02:10DateTime.Now.ToLocalT...转载 2019-10-09 14:46:00 · 197 阅读 · 0 评论 -
MySQL(3)——日期时间(1)——mysql中date与datetime的区别
date类型可用于需要一个日期值而不需要时间部分时。MySQL 以 'YYYY-MM-DD' 格式检索与显示date值。支持的范围是 '1000-01-01' 到'9999-12-31'。datetime类型:可用于需要同时包含日期和时间信息的值。MySQL 以 'YYYY-MM-DD HH:mm:ss'格式检索与显示 DATETIME 类型。支持的范围是'1000-01-0100:00:00...原创 2019-04-01 19:53:18 · 1048 阅读 · 0 评论 -
集合(6)——DataSet(2)——获取DataSet中某行某列的数据
LabelText=DataSet11.Tables("COMM.USERS").Rows[0]["User_Name"].tostring()LabelText = DataSet11.Tables("COMM.USERS").Rows(0).Item("user_name")Label.Text=ds.Tables(0).Rows(i).Item( "列名 ")Label.Te...原创 2019-07-11 17:44:06 · 1049 阅读 · 0 评论 -
集合(5)——DataSet(1)——如何取DataSet第一个表中第一行一列的数据
private void button1_Click(object sender, EventArgs e) { //假定目前dataset里只有一个表 DataTable dt = ds.Tables[0]; string textname = "tn";//必须保证有这行 ...原创 2019-07-11 17:42:17 · 2373 阅读 · 0 评论 -
数据类型(2)——C#中的数据类型转换
数据类型在一定的条件下是可以相互转换的,如将int型数据转换成double型数据。C#允许使用两种转换方式:隐式转换和显式转换。1、隐式转换隐式转换:从类型A到类型B的转换可以在所有情况下进行,执行转换的规则非常简单,可以让编译器执行转换。隐式转换不需要做任何工作,也不需要另外编写代码。如将int型数据转换成double型数据:int a = 10;double b = a;/...转载 2019-12-16 22:29:08 · 357 阅读 · 0 评论