ASP.NET网页编程之ASP.NET中依据XML静态创立利用WEB组件
因为各系统的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").InnerText;totalnum=int.Parse(mXmlDoc.SelectNodes("//Root/Totalnum").InnerText);
//读出列数
cells=int.Parse(mXmlDoc.SelectNodes("//Root/Cells").InnerText);
XmlNodeListmXmlNodes=mXmlDoc.SelectNodes("//Root/IPlink");
foreach(XmlNodeIPlinkchildlNodeinmXmlNodes)
{
//失掉序列号
inticount=int.Parse(IPlinkchildlNode.ChildNodes.InnerText);
//依据序列号,将丈量点的称号放进称号数组响应的地位上
namestr=IPlinkchildlNode.ChildNodes.InnerText;
//依据序列号,将丈量点的IP放进IP数组响应的地位上
ipstr=IPlinkchildlNode.ChildNodes.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").InnerText;
关于有子节点的元素如:
<IPlink>
<Name>站点1</Name>
<IP>192.8.198.1</IP>
<Sequence>1</Sequence>
</IPlink>
要利用语句以下来读取。
IPlinkchildlNode.ChildNodes.InnerText
个中ChildNodes中的为子节点的序号,子节点
<Name>站点1</Name>
的序号应当为。
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.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;
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;
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;
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楼,出乎意料的是大家居然纷纷写出自己的博文,还被编辑做成了专题,置于首页头条。 HTML:当然这是网页最基本的语言,每一个服务器语言都需要它的支持,要学习,这个肯定是开始,不说了. 业务逻辑代码都不必做任何改动;继承性和多态性使得代码的可重用性大大提高,你可以通过继承已有的对象最大限度保护你以前的投资。并且C#和C++、Java一样提供了完善的调试/纠错体系。 有一丝可惜的是,这个系列太强了,Java阵营的朋友根本就是哑口无言...争论之火瞬间被浇灭,这不是我想这么早就看到的,但是值了。 目前在微软的.net战略中新推出的ASP.net借鉴了Java技术的优点,使用CSharp(C#)语言作为ASP.net的推荐语言,同时改进了以前ASP的安全性差等缺点。但是,使用ASP/ASP.net仍有一定的局限性,因为从某种角度来说它们只能在微软的WindowsNT/2000/XP+IIS的服务器平台上良好运行(虽然像ChilliSoft提供了在UNIX/Linux上运行ASP的解决方案. 目前在微软的.net战略中新推出的ASP.net借鉴了Java技术的优点,使用CSharp(C#)语言作为ASP.net的推荐语言,同时改进了以前ASP的安全性差等缺点。但是,使用ASP/ASP.net仍有一定的局限性,因为从某种角度来说它们只能在微软的WindowsNT/2000/XP+IIS的服务器平台上良好运行(虽然像ChilliSoft提供了在UNIX/Linux上运行ASP的解决方案. 平台无关性是PHP的最大优点,但是在优点的背后,还是有一些小小的缺点的。如果在PHP中不使用ODBC,而用其自带的数据库函数(这样的效率要比使用ODBC高)来连接数据库的话,使用不同的数据库,PHP的函数名不能统一。这样,使得程序的移植变得有些麻烦。不过,作为目前应用最为广泛的一种后台语言,PHP的优点还是异常明显的。 我的意思是.net好用,从功能上来说比JAVA强还是很明显的。 ASP.NET可以无缝地与WYSIWYGHTML编辑器和其他编程工具(包括MicrosoftVisualStudio.NET)一起工作。这不仅使得Web开发更加方便,而且还能提供这些工具必须提供的所有优点,包括开发人员可以用来将服务器控件拖放到Web页的GUI和完全集成的调试支持。微软为ASP.net设计了这样一些策略:易于写出结构清晰的代码、代码易于重用和共享、可用编译类语言编写等等,目的是让程序员更容易开发出Web应用,满足计算向Web转移的战略需要。
页:
[1]