仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 603|回复: 8
打印 上一主题 下一主题

[学习教程] ASP.NET网页编程之ASP.NET中依据XML静态创立利用WEB组件

[复制链接]
逍遥一派 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:37:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
因为各系统的API不同,代码调用API编写程序就会遇到很多不兼容的地方,比如Java改写后的Serv-U就不能在手机上执行,手机的游戏也不能直接在微机上执行。asp.net|web|xml|创立|静态前段工夫笔者在开辟中必要静态创立WEB组件,本觉得是大事一桩,谁知看时简单做时难。内里还真有些小成绩。上面笔者就分离本人的程序来先容一下怎样静态创立并利用WEB组件,但愿能给做相似事情的伴侣供应一点匡助。

1、程序思绪

程序次要分三部分:

1、程序要依据XML中的数据信息断定必要创立的WEB组件的个数。

2、静态创立WEB组件。

3、利用静态创立的WEB组件。

个中2和3是笔者要重点先容的部分。

上面笔者就依照这三部分分离程序实例(以c#为例)来逐一先容。

2、读取XML文件

读取XML文件在良多的材料中都有具体的申明,并且信任良多伴侣都已很好的把握了其手艺。但为了包管文章的完全性,笔者在这里仍是要赘述几句。深谐其味的伴侣能够略过此段不看。

笔者程序中要读取的XML文件形以下列:

config.xml

<?xmlversion="1.0"?>

<Root>

<Nettype>net</Nettype>

<Totalnum>6</Totalnum>

<Cells>2</Cells>

<IPlink>

<Name>站点1</Name>

<IP>192.8.198.1</IP>

<Sequence>1</Sequence>

</IPlink>

<IPlink>

<Name>站点2</Name>

<IP>192.8.198.2</IP>

<Sequence>2</Sequence>

</IPlink>

……

</Root>
读取XML文件的程序以下:

protectedvoidreadconfig()

{

try

{

System.Xml.XmlDocumentmXmlDoc=newSystem.Xml.XmlDocument();

mXmlDoc.Load(Server.MapPath(configfilepath));

nettype=mXmlDoc.SelectNodes("//Root/Nettype")[0].InnerText;totalnum=int.Parse(mXmlDoc.SelectNodes("//Root/Totalnum")[0].InnerText);

//读出列数

cells=int.Parse(mXmlDoc.SelectNodes("//Root/Cells")[0].InnerText);

XmlNodeListmXmlNodes=mXmlDoc.SelectNodes("//Root/IPlink");

foreach(XmlNodeIPlinkchildlNodeinmXmlNodes)

{

//失掉序列号

inticount=int.Parse(IPlinkchildlNode.ChildNodes[2].InnerText);

//依据序列号,将丈量点的称号放进称号数组响应的地位上

namestr[icount]=IPlinkchildlNode.ChildNodes[0].InnerText;

//依据序列号,将丈量点的IP放进IP数组响应的地位上

ipstr[icount]=IPlinkchildlNode.ChildNodes[1].InnerText;

}

}

catch

{

errmessage.InnerHtml="<tablealign=center><tr>

<tdalign=left><fontcolor=red>不克不及读取设置文件,大概的毛病是<br>"+"1、设置文件不存在<br>"+

"2、设置文件内容被破坏"+

"</font></td></tr></table>";

}

}
程序中对XML中无子节点的元素如:

<Nettype>net</Nettype>
间接利用以下语句读取。

mXmlDoc.SelectNodes("//Root/Nettype")[0].InnerText;
关于有子节点的元素如:

<IPlink>

<Name>站点1</Name>

<IP>192.8.198.1</IP>

<Sequence>1</Sequence>

</IPlink>
要利用语句以下来读取。

IPlinkchildlNode.ChildNodes[N].InnerText
个中ChildNodes[N]中的[N]为子节点的序号,子节点

<Name>站点1</Name>
的序号应当为[0]。
3、静态创立WEB组件。

先来看程序实例:

privatevoidcreateconfigtable(inttotalnum,int[]sequenceint,string[]namestr,string[]ipstr)

{

//依据失掉丈量点的总数,静态天生输出框

for(inti=1;i<=totalnum;i++)

{

//创立表格

HtmlTableshowtable=newHtmlTable();

showtable.Border=0;

showtable.ID="showtable"+i.ToString();

showtable.BorderColor="#000000";

showtable.CellPadding=4;

showtable.CellSpacing=4;

showtable.Align="center";

myPlaceHolder.Controls.Add(showtable);

//创立一行

HtmlTableRowtRow=newHtmlTableRow();

showtable.Rows.Add(tRow);

//创立第一列(序号)

HtmlTableCelltCell=newHtmlTableCell();

LabelsequenceLabel=newLabel();

sequenceLabel.ID="sequenceLabel"+i.ToString();

sequenceLabel.Text="序号:";

sequenceLabel.Enabled=true;

tCell.Controls.Add(sequenceLabel);

tRow.Cells.Add(tCell);

//创立第二列

tCell=newHtmlTableCell();

sequencedataTB=newTextBox();

sequencedataTB.ID="sequencedataTB"+i.ToString();

sequencedataTB.Text=i.ToString();

sequencedataTB.Width=30;

sequencedataTB.Text=sequenceint[i].ToString();

sequencedataTB.ReadOnly=false;

//创立第三列(称号)

tCell=newHtmlTableCell();

LabelnameLabel=newLabel();

nameLabel.ID="nameLabel"+i.ToString();

nameLabel.Text="称号:";

nameLabel.Enabled=true;

tCell.Controls.Add(nameLabel);

tRow.Cells.Add(tCell);

//创立第四列

tCell=newHtmlTableCell();

nameTB=newTextBox();

nameTB.ID="nameTB"+i.ToString();

nameTB.Width=120;

nameTB.Text=namestr[i];

nameTB.MaxLength=50;

tCell.Controls.Add(nameTB);

tRow.Cells.Add(tCell);

//创立第五列(IP)

tCell=newHtmlTableCell();

LabelipLabel=newLabel();

ipLabel.ID="ipLabel"+i.ToString();

ipLabel.Text="IP:";

ipLabel.Enabled=true;

tCell.Controls.Add(ipLabel);

tRow.Cells.Add(tCell);

//创立第六列

tCell=newHtmlTableCell();

ipTB=newTextBox();

ipTB.ID="ipTB"+i.ToString();

ipTB.Width=120;

ipTB.Text=ipstr[i];

ipTB.MaxLength=15;

tCell.Controls.Add(ipTB);

tRow.Cells.Add(tCell);

}

}

tCell.Controls.Add(sequencedataTB);

tRow.Cells.Add(tCell);

……

//创立第五列(IP)

tCell=newHtmlTableCell();

LabelipLabel=newLabel();

ipLabel.ID="ipLabel"+i.ToString();

ipLabel.Text="IP:";

ipLabel.Enabled=true;

tCell.Controls.Add(ipLabel);

tRow.Cells.Add(tCell);

//创立第六列

tCell=newHtmlTableCell();

ipTB=newTextBox();

ipTB.ID="ipTB"+i.ToString();

ipTB.Width=120;

ipTB.Text=ipstr[i];

ipTB.MaxLength=15;

tCell.Controls.Add(ipTB);

tRow.Cells.Add(tCell);

}

}

程序中的myPlaceHolder是System.Web.UI.WebControls.PlaceHolder组件,利用该组件的HTML语法以下:

……

<tr>

<td>

<asp:PlaceHolderid="myPlaceHolder"runat="server"></asp:PlaceHolder>

</td>

</tr>

……

利用该组件的目标是为了定位静态创立的表格。该组件在页面上的地位即为静态创立的表格的地位。

程序中别的一个要申明的中央是静态创立的组件的ID的设定。组件的ID的设定要注重两点:

1、ID号不克不及反复

2、要便于在程序中利用。由于要在程序中利用静态创立的组件,要经由过程该组件的ID来查找。(关于这一点,在“利用静态创立的WEB组件”部分会有较为具体的先容)
我感觉可以顶到50楼,出乎意料的是大家居然纷纷写出自己的博文,还被编辑做成了专题,置于首页头条。
若天明 该用户已被删除
沙发
发表于 2015-1-19 06:25:55 | 只看该作者
HTML:当然这是网页最基本的语言,每一个服务器语言都需要它的支持,要学习,这个肯定是开始,不说了.
乐观 该用户已被删除
板凳
发表于 2015-1-24 09:49:20 | 只看该作者
业务逻辑代码都不必做任何改动;继承性和多态性使得代码的可重用性大大提高,你可以通过继承已有的对象最大限度保护你以前的投资。并且C#和C++、Java一样提供了完善的调试/纠错体系。
再见西城 该用户已被删除
地板
发表于 2015-1-31 22:55:25 来自手机 | 只看该作者
有一丝可惜的是,这个系列太强了,Java阵营的朋友根本就是哑口无言...争论之火瞬间被浇灭,这不是我想这么早就看到的,但是值了。
活着的死人 该用户已被删除
5#
发表于 2015-2-7 01:17:55 | 只看该作者
目前在微软的.net战略中新推出的ASP.net借鉴了Java技术的优点,使用CSharp(C#)语言作为ASP.net的推荐语言,同时改进了以前ASP的安全性差等缺点。但是,使用ASP/ASP.net仍有一定的局限性,因为从某种角度来说它们只能在微软的WindowsNT/2000/XP+IIS的服务器平台上良好运行(虽然像ChilliSoft提供了在UNIX/Linux上运行ASP的解决方案.
深爱那片海 该用户已被删除
6#
发表于 2015-2-19 07:27:01 | 只看该作者
目前在微软的.net战略中新推出的ASP.net借鉴了Java技术的优点,使用CSharp(C#)语言作为ASP.net的推荐语言,同时改进了以前ASP的安全性差等缺点。但是,使用ASP/ASP.net仍有一定的局限性,因为从某种角度来说它们只能在微软的WindowsNT/2000/XP+IIS的服务器平台上良好运行(虽然像ChilliSoft提供了在UNIX/Linux上运行ASP的解决方案.
飘飘悠悠 该用户已被删除
7#
发表于 2015-3-6 14:03:14 | 只看该作者
平台无关性是PHP的最大优点,但是在优点的背后,还是有一些小小的缺点的。如果在PHP中不使用ODBC,而用其自带的数据库函数(这样的效率要比使用ODBC高)来连接数据库的话,使用不同的数据库,PHP的函数名不能统一。这样,使得程序的移植变得有些麻烦。不过,作为目前应用最为广泛的一种后台语言,PHP的优点还是异常明显的。
海妖 该用户已被删除
8#
发表于 2015-3-13 01:21:58 | 只看该作者
我的意思是.net好用,从功能上来说比JAVA强还是很明显的。
第二个灵魂 该用户已被删除
9#
发表于 2015-3-20 09:11:24 | 只看该作者
ASP.NET可以无缝地与WYSIWYGHTML编辑器和其他编程工具(包括MicrosoftVisualStudio.NET)一起工作。这不仅使得Web开发更加方便,而且还能提供这些工具必须提供的所有优点,包括开发人员可以用来将服务器控件拖放到Web页的GUI和完全集成的调试支持。微软为ASP.net设计了这样一些策略:易于写出结构清晰的代码、代码易于重用和共享、可用编译类语言编写等等,目的是让程序员更容易开发出Web应用,满足计算向Web转移的战略需要。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-24 01:09

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表