zl程序教程

您现在的位置是:首页 >  后端

当前栏目

ASP.NET批量操作基于原生html标签的无序列表的三种方法

2023-06-13 09:15:46 时间

在网页开发中,经常要用到无序列表。事实上在符合W3C标准的div+css布局中,无序列表被大量使用,ASP.NET虽然内置了BulletedList控件,用于创建和操作无序列表,但感觉不太好用。本篇介绍服务器端ASP.NET批量操作基于原生html标签的无序列表的三种方法。

方法一,将li元素做成html控件,加上id,用FindControl方法。

aspx代码:

<formid="form1"runat="server">
<ul>
<liid="li1"runat="server">初始值1</li>
<liid="li2"runat="server">初始值2</li>
<liid="li3"runat="server">初始值3</li>
<liid="li4"runat="server">初始值4</li>
<liid="li5"runat="server">初始值5</li>
<liid="li6"runat="server">初始值6</li>
<liid="li7"runat="server">初始值7</li>
<liid="li8"runat="server">初始值8</li>
</ul>
<asp:ButtonID="Button1"runat="server"Text="Button"onclick="Button1_Click"/>
</form>

aspx.cs代码:

protectedvoidButton1_Click(objectsender,EventArgse)
{
//单击按钮后批量改变li元素的内联文本值及样式
for(inti=1;i<=8;i++)
{
HtmlGenericControlli=this.FindControl("li"+i)asHtmlGenericControl;
li.InnerHtml="新值"+i.ToString();
li.Attributes.CssStyle.Value="color:red";
}
}

方法二,将ul、li元素做成html控件,用ul控件的Controls集合遍历。

aspx代码:

<formid="form1"runat="server">
<ulid="ul1"runat="server">
<lirunat="server">初始值1</li>
<lirunat="server">初始值2</li>
<lirunat="server">初始值3</li>
<lirunat="server">初始值4</li>
<lirunat="server">初始值5</li>
<lirunat="server">初始值6</li>
<lirunat="server">初始值7</li>
<lirunat="server">初始值8</li>
</ul>
<asp:ButtonID="Button1"runat="server"Text="Button"OnClick="Button1_Click"/>
</form>

aspx.cs代码:

privateintcounter=1;
protectedvoidButton1_Click(objectsender,EventArgse)
{
//单击按钮后批量改变li元素的内联文本值及样式
foreach(Controlcontrolinul1.Controls)
{
if(controlisHtmlGenericControl)
{
HtmlGenericControlli=controlasHtmlGenericControl;
li.InnerHtml="新值"+(counter++).ToString();
li.Attributes.CssStyle.Value="color:red";
}
}
}

方法三,利用HtmlAgilityPack,对元素以Dom方式操作。

aspx代码:

<formid="form1"runat="server">
<ulid="ul1"runat="server">
<li>初始值1</li>
<li>初始值2</li>
<li>初始值3</li>
<li>初始值4</li>
<li>初始值5</li>
<li>初始值6</li>
<li>初始值7</li>
<li>初始值8</li>
</ul>
<asp:ButtonID="Button1"runat="server"Text="Button"OnClick="Button1_Click"/>
<asp:ButtonID="Button2"runat="server"Text="测试空回发"/>
</form>

aspx.cs代码:

protectedvoidButton1_Click(objectsender,EventArgse)
{
//单击按钮后批量改变li元素的内联文本值及样式
HtmlDocumenthtmlDoc=newHtmlDocument();
htmlDoc.LoadHtml(ul1.InnerHtml);
HtmlNodeCollectionlis=htmlDoc.DocumentNode.SelectNodes("li");
for(inti=0;i<lis.Count;i++)
{
lis[i].InnerHtml="新值"+(i+1).ToString();
lis[i].Attributes.Add("style","color:red");
}
ul1.InnerHtml=htmlDoc.DocumentNode.InnerHtml;
}

以上三种方法各有优缺点,可根据实际情况选用。