从零开始学ASP.NET(基础篇)
原作者:蓝鲸 | 出处:5D多媒体 |
学ASPNET与ASP有区别,这种区别不是语言上的,而是思路上的区别。ASP是纯面向过程的,而ASPNET是完全面向对向的。这种区别使我们在编程的结构设计上要与ASP有很大的不同。
废话少说了,现在我也和各位一起从零开始。我用C#,其实用VB.NET的朋友也应该可以看懂,我会在不同之处说明一些区别的。
第一天
学习目的:
掌握最基本的Label、TextBox、Button控件用法
掌握用StringBuider类连接字符串
理解服务器的环境变量
StringBuilder类:
命名空间是:System.Text。
StringBuilder类是个高效的类,StringBuilder.Append连接字符串的方法是非常快的。用于连接大量的字符串,其速度的优越性就会体现出来。
先举几个例子:
在cs或vb文件的头部加上
[C#]using System.Text;
[VB]Imports System.Text[C#]StringBuilder sbFirst = new StringBuilder();
sbFirst.Append(“这是第一个学ASPNET的例子</br>”);
sbFirst.Append( “这个例子太简单</br>”);
sbFirst.Append( “连三岁小陔都会做,我早知道了,嘿嘿。”);
Response.Write(sbFirst.ToString());[VB]Dim sbFirst As StringBuilder = New StringBuilder()
sbFirst.Append(“这是第一个学ASPNET的例子</br>”)
sbFirst.Append( “这个例子太简单</br>”)
sbFirst.Append( “连三岁小陔都会做,我早知道了,嘿嘿。”)
Response.Write(sbFirst.ToString)
下面就可以做正题了:
先建立一个C#的WEB应用程序工程,这废话我就少说了吧。
放一个Button控件:ID为btnShowVariable
放一个Label控件:ID为labServerVariable
添加Button的单击事件,如下代码:
private void btnShowVariable_Click(object sender, System.EventArgs e)
{
labServerVariables.Text = "";StringBuilder info = new StringBuilder();
foreach (object objVar in Request.ServerVariables)
{
info.Append("<span style='font-size:9pt'>");
info.Append(objVar.ToString());
info.Append(" = <font color=blue>");
info.Append(Request.ServerVariables[objVar.ToString()]);
info.Append("</font></span><br>");
}labServerVariables.Text = info.ToString();
}
结果显示如下:
这样我们就可以这样用:
Response.Write(Request.ServerVariables["REMOTE_ADDR"]); // IP地址
Response.Write("<BR>");
Response.Write(Request.ServerVariables["URL"]); // 网页的URL
第二天
学习目的:
掌握文本框的用法
初次接触try…catch…语法
今天内容很轻松,用一个例子,输入年月日,判断输入是否正确
用个文本框,ID分别为txtYear,txtMonth,txtDate;
检验按钮的代码为:
private void btnCheck_Click(object sender, System.EventArgs e)
{
int year, month, date;
// 先把输入的字符转成int类型,如果非数字型,
// 会触发错误
try
{
year = Convert.ToInt32(txtYear.Text);
month = Convert.ToInt32(txtMonth.Text);
date = Convert.ToInt32(txtDate.Text);
}
catch
{
labCheckInfo.Text = "输入的是非数字字符。";
return;
}// 如果第一步检验合格,就把输入的数字转化为日期格式
// 如果不符合日期格式即引发错误
try
{
DateTime dt = new DateTime(year, month, date);
}
catch
{
labCheckInfo.Text = "输入的数字不符合日期格式";
return;
}labCheckInfo.Text = "输入正确";
}
第三天
学习目的:
掌握下拉列表框的用法,并理解AutoPostBack属性;
理解IsPoskBack及用法;
初识DataTable的增加列、行,与下拉列表框绑定的方法。
今天的内容稍多些,而且涉及一些比较常用的,如IsPostBack及DataTable的基本用法。
知识点:
IsPostBack:在页面onLoad之间是false值,而当从服务器回传后,该值变为true。当页面中的Button或ImageButton等触发事件,都会把表单回传到服务器,而返回时又会引发onLoad事件。为了节省服务器资源,有些加载中需进行一次,而不需要在回传后多次发生,可以用!IsPoskBack来作为条件,那么页面第一次加载后,以后就不会发生。该属性可以帮助你提高程序的性能。
DataTable:即数据表,.Net 程序中最常用的类,特别是数据库开发中,没有该类的程序是不可想象的。
先做个小程序来练练手,很简单,就一个下拉菜单,取名dlstWeb。在属性的Itmes选项中打开以下对话框,添加各项:
ASPX中的代码为:
<asp:DropDownList id="dlstWeb" style="Z-INDEX: 101; LEFT: 32px;
POSITION: absolute; TOP: 32px" runat="server"
Width="88px" AutoPostBack="True">
<asp:ListItem value="http://www.sina.com.cn">新浪 </asp:ListItem>
<asp:ListItem value="http://www.sohu.com">搜狐</asp:ListItem>
<asp:ListItem value="http://www.163.com">网易</asp:ListItem>
</asp:DropDownList>
在下拉框的SelectedIndexChanged事件中的加入代码:
private void dlstWeb_SelectedIndexChanged(object sender, System.EventArgs e)
{
Response.Write("<script language=javascript>window.open
('" +dlstWeb.Selectedvalue + "');</script>");
}
按F5运行,可是我们发现这下拉框选择时什么事也没发生。原来原因是出在下拉框的AutoPostBack属性上,把它设为true后再试试,一切OK了。
下面我们增加些难度,下拉框中的内容很多情况下不是事先固定的,而是要动态添加。这里设计是用一数据表DataTable与之联系起来。
另建一文件,按上添加一下拉框,取名dlstWeb,先设AutoPostPack为false,否则在刚启动而面就触发SelectedIndexChanged事件,弹出窗口就乱飞了。
在onLoad事件中添加代码,注意DataTable用法及IsPoskBack
DataTable属于System.Data命名空间,所以如果页面没预添加,可以自行增加这一行。
private void Page_Load(object sender, System.EventArgs e)
{
// 用IsPostBack判断,只在没有回传时才初始化
// 这样可以防止每次刷新或回传时,都执行一次以下代码
// 可以节省服务器的资源了。
if (!IsPostBack)
{
DataTable dt = new DataTable();
DataRow dr;// 在表中增加字段
dt.Columns.Add("WebName",typeof(string));
dt.Columns.Add("WebUrl", typeof(string));// 表中增加行
dr = dt.NewRow();
dr["WebName"] = "新浪";
dr["WebUrl"] = "http://www.sina.com.cn";
dt.Rows.Add(dr);dr = dt.NewRow();
dr["WebName"] = "网易";
dr["WebUrl"] = "http://www.163.com";
dt.Rows.Add(dr);dr = dt.NewRow();
dr["WebName"] = "搜狐";
dr["WebUrl"] = "http://www.sohu.com";
dt.Rows.Add(dr);// 把表与下拉菜单绑定数据
dlstWeb.DataSource = dt;
dlstWeb.DataTextField = "WebName";
dlstWeb.DatavalueField = "WebUrl";
dlstWeb.DataBind();// 开始时就把下拉菜单的AutoPostBack设为false,
// 防止一开始就乱跳出网页来
dlstWeb.AutoPostBack = true;
}
}
下面的事件与前面一模一样了
private void dlstWeb_SelectedIndexChanged( object sender, System.EventArgs e)
{
Response.Write("<script language=javascript>window.open
('" +dlstWeb.Selectedvalue + "');</script>");
}
VB.NET增加字段代码稍有不同,如下:
// 在表中增加字段
dt.Columns.Add("WebName", GetType(String))
dt.Columns.Add("WebUrl", GetType(String) )
其它都差不多了。
小结:今天的一些知识非常重要,为了理解,程序的难度并不高。但这是以后程序设计的基础,所以这些你一定要掌握。
相关文章:
2 行代码,将 .NET 执行时间降低 87%!
作者 | STEVE GORDON译者 | 弯月,责编 | 屠敏头图 | CSDN 下载自东方 IC出品 | CSDN(ID:CSDNnews)以下为译文:长期以来,我一直在致力于提高性能,并且努力避免在关键代码路径中进行内存分配。例如…

Ansible基础一Playbook(二)
摘自:http://www.ansible.com.cn/docs/playbooks_intro.htmlHandlers: 在发生改变时执行的操作(当发生改动时)’notify’ actions 会在 playbook 的每一个 task 结束时被触发,而且即使有多个不同的 task 通知改动的发生, ‘notify’ actions …

sendmail服务器案例配置
Linux/UNIX下的老牌邮件服务器。Sendmail作为一种免费的邮件服务器软件,已被广泛的应用于各种服务器中,它在稳定性、可移植性、及确保没有bug等方面具有一定的特色,且可以在网络中搜索到大量的使用资料。 实验拓扑图: 注ÿ…

网页制作的中的一些工具代码
1. οncοntextmenu"window.event.returnvaluefalse" 将彻底屏蔽鼠标右键 <table border οncοntextmenureturn(false)><td>no</table> 可用于Table2. <body onselectstart"return false"> 取消选取、防止复制3. οnpaste"r…
神经网络其实和人一样懒惰,喜欢走捷径......
作者 | Jrn-Henrik Jacobsen, Robert Geirhos, Claudio Michaelis,深度学习研究专家译者 | Arvin,责编 | 夕颜出品 | CSDN(ID:CSDNnews)以下为译文:人工智能会很快取代放射科医生吗?最近,研究人…

nodejs获取ASP.Net WebAPI(IIS Windows验证)
处理了很多天,终于使用Nodejs可以发出请求至WebAPI,能够正常处理数据了 首先加入npm包 npm install httpntlm 在app.js中加入代码 var httpntlm require(httpntlm); var fs require(fs);var options {url: http://get001.mygroup.com/InstantNoodle_S…

ubb代码转化html代码
ubb代码转化html代码 public static string UbbDecode(string str){str HtmlEncode(str);str Regex.Replace(str, "/[url](?<url>.?)/[/url]", "<a href${url} target_blank>${url}</a>", RegexOptions.Compiled | RegexOptions.Ig…

如何定位EXC_BAD_ACCESS错误 (info malloc-history)
在 iphone 开发中使用内存时,我们经常会遇到 EXC_BAD_ACCESS 的错误。 出现这个错误的原因是我们访问了一个已经被释放掉的对象,如: implementation FeedbackViewController - (void)viewDidLoad {[super viewDidLoad];_scrollView [[UIScro…
一周内咸鱼疯转2.4W次,最终被所有大厂封杀!
(含答案)所有面试资料及技术好文精选文档都整理到网盘了。Java面试官手册需要加微信免费领取Java面试官手册需要加微信免费领取长按扫码或搜索微信号:gh16670101550,免费领取

java 基础知识三 java变量
1、作用域 {} 包围起来的代码称之为代码块,在块中声明的变量只能在块中使用 2、常量 就是固定不变的量,一旦被定义,它的值就不能再被改变。 3、变量 变量必须在程序中被定义(或声明)后才能使用,而且为每个变…
打通语言理论和统计NLP,Transformers/GNNs架构能做到吗?
作者 | Chaitanya K. Joshi译者 | 苏本如,责编 | 夕颜来源 | CSDN(ID:CSDNnews)我的工程师朋友经常问我:图深度学习听起来很棒,但是有没有实际应用呢?虽然图神经网络被用于Pinterest、阿里巴巴和推特的推荐…

艰辛的面向对象
为什么80%的码农都做不了架构师?>>> 所有的操作系统都不是面向对象的。 所有的操作系统都是基于函数的。ANDROID框架里面的好多类也是基于函数的。很多都是静态的方法。这个框架包括两个部分:一是JAVA部分,一是本地类。本地类不…

计算机网络第一课
1.IPv4与IPv6的区别是什么?在windows 7以上系统中,在设置本地IP地址的时候经常会看到同事含有IPV4协议项与IPV6协议项,并不同于以往windows xp系统中仅有TCP/IP协议项,不少朋友都觉得比较奇怪,询问编辑IPv4与IPv6的区别…

常用函数集农历函数
常用函数集农历函数原来是vb代码,重新整理为VB.NET版的,并在VS2003中编译通过Imports System.MathPublic Class UCnCalendarPrivate Structure SolarHolidayStructDim Month As IntegerDim Day As IntegerDim Recess As IntegerDim HolidayName As Strin…
微软发布代码智能新基准数据集CodeXGLUE,多角度衡量模型优劣
来源 | 微软研究院AI头条编者按:代码智能(code intelligence)目的是让计算机具备理解和生成代码的能力,并利用编程语言知识和上下文进行推理,支持代码检索、补全、翻译、纠错、问答等场景。以深度学习为代表的人工智能…

Spring从菜鸟到高手(四)(上)使用JdbcTemplate类实现用户登陆验证、批量更新
标签:Spring java JdbcTemplate Spring从菜鸟到高手 绝缘材料原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://tonyaction.blog.51cto.com/227462/42042看了我前面几篇文章的朋…

CSS盒模型及边距问题
盒模型是CSS的基石之一,页面的每一个元素都被看作一个矩形框,分别由外边距,边框,内边距,内容组成, 在CSS中,width和height的值指的是内容的宽高,增加外边距,边框…

区分C语言中getch、getche、fgetc、getc、getchar、fgets、gets
首先,这两个函数不是C标准库中的函数, int getch(void) //从标准输入读入一个字符,当你用键盘输入的时候,屏幕不显示你所输入的字符。也就是,不带回显。 int getche(void) //从标准输入读入一个字符&…
无限想象空间,用Python玩转3D人体姿态估计
前言姿态估计,一直是近几年的研究热点。它就是根据画面,捕捉人体的运动姿态,比如 2D 姿态估计:再比如 3D 姿态估计:看着好玩,那这玩应有啥用呢?自动驾驶,大家应该都不陌生࿰…

Mac中将delete键定义为删除键
在Mac中,delete键实际是退格键(Backspace),fndelete才是删除键。这也是从Windows转到Mac时不习惯的地方之一。 通过安装DoubleCommand软件可以解决这个问题。安装后,在System Preferences中找到DoubleCommand找打开在E…

CHIL-SQL-MIN() 函数
MIN() 函数 MIN 函数返回一列中的最小值。NULL 值不包括在计算中。 SQL MIN() 语法 SELECT MIN(column_name) FROM table_name 注释:MIN 和 MAX 也可用于文本列,以获得按字母顺序排列的最高或最低值。 SQL MIN() 实例 我们拥有下面这个 "Orders&quo…
Google排名第一的语言,引数十万人关注:搞定它,技术大牛都甘拜下风
毋庸置疑,Python越来越被认可为程序员新时代的风口语言。无论是刚入门的程序员,还是年薪百万的 BATJ 的大牛都无可否认:Python的应用能力是成为一名码农大神的必要项。 所以,很多程序员把Python当做第一语言来学习。 但对于Python…

CSS滤镜详解
CSS滤镜详解 简介〓 设置文字透明层次,模糊效果,给文字加光晕等这些本来要靠图片才能处理的效果,现在CSS可以既简单又快速的把它实现了……接着往下看就知道了。 〓正文〓 语法:STYLE"filter:filtername(fparameter1, fpa…

php实现单链表
<?php //单链表的存储结构 class Node{ public $data;//数据域 public $next;//指针域 指向下一个结点 function __construct(){ $this->data null; $this->next null; } } //单链表数据类型 class LinkList{ public $data; public $next; function _…

2017-2-23 C#基础 中间变量
用中间变量做这个题 1、“请输入年份:”(1-9999) “请输入月份:”(1-12) “请输入日期:”(要判断大小月,判断闰年) 判断输入的时间日期是否正确 2、计算输入的…

HTA的简单应用
HTA简介:HTA是HTML Application的缩写(HTML应用程序),是软件开发的新概念,直接将HTML保存成HTA的格式,就是一个独立的应用软件,与VB、C等程序语言所设计的软件没什么差别。下面是一个HTA的例子&…
300亿美元,AMD为什么要买Xilinx?
作者 | Just来源 | CSDN(ID:CSDNnews)自2015年5月,Intel(英特尔)以167亿美元收购FPGA生产商Altera后,半导体行业接连传出大整合。上个月,NVIDIA(英伟达)宣布以400亿美元收购芯片设计公司Arm&…

PIM-SSM简介
源特定组播(SSM:Source Specific Multicast)是一种区别于传统组播的新的业务模型,它使用组播组地址和组播源地址同时来标识一个组播会话,而不是向传统的组播服务那样只使用组播组地址来标识一个组播会话。SSM保留了传统PIM-SM模式中的主机显示…

MyBatis开发入门二:一对多连表查询
1. 步骤: (1). 加包(2). 编写db.properties;编写conf.xml,将db.properties加入到conf.xml;引入别名(3). 建立实体类(4). 编写sql操作对应的***Mapper.xml文件(5). 将sql操作对应的***Mapper.xml文件注册到conf.xml文件中(6). 编写…

ASP.NET里的事务处理
出自: http://blog.csdn.net/ycl111/ 事务是一组组合成逻辑工作单元的数据库操作,虽然系统中可能会出错,但事务将控制和维护每个数据库的一致性和完整性。如果在事务过程中没有遇到错误,事务中的所有修改都将永久成为数据库的一部…