在 ASP.NET WebForms 中,需對前台 `
<ul>
<li id="li1" runat="server">初始值1</li>
<li id="li2" runat="server">初始值2</li>
...
<li id="li8" runat="server">初始值8</li>
</ul>
<asp:Button ID="Button1" runat="server" Text="批量修改" OnClick="Button1_Click" />
protected void Button1_Click(object sender, EventArgs e)
{
for (int i = 1; i <= 8; i++)
{
HtmlGenericControl li = this.FindControl("li" + i) as HtmlGenericControl;
li.InnerHtml = "新值" + i;
li.Attributes.CssStyle.Value = "color:red";
}
}
<ul id="ul1" runat="server">
<li runat="server">初始值1</li>
<li runat="server">初始值2</li>
...
</ul>
private int counter = 1;
protected void Button1_Click(object sender, EventArgs e)
{
foreach (Control control in ul1.Controls)
{
if (control is HtmlGenericControl li)
{
li.InnerHtml = "新值" + (counter++);
li.Attributes.CssStyle.Value = "color:red";
}
}
}
<ul id="ul1" runat="server">
<li>初始值1</li>
<li>初始值2</li>
...
</ul>
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" />
protected void Button1_Click(object sender, EventArgs e)
{
var htmlDoc = new HtmlDocument();
htmlDoc.LoadHtml(ul1.InnerHtml);
var lis = htmlDoc.DocumentNode.SelectNodes("li");
for (int i = 0; i < lis.Count; i++)
{
lis[i].InnerHtml = "新值" + (i + 1);
lis[i].Attributes.Add("style", "color:red");
}
ul1.InnerHtml = htmlDoc.DocumentNode.InnerHtml;
}
| 維度 | 方案一 | 方案二 | 方案三 |
|---|---|---|---|
| 前台標記複雜度 | 高 | 中 | 低 |
| 動態列表適應性 | 差 | 好 | 好 |
| 性能 | 最優 | 優 | 一般 |
| 靈活度/查詢能力 | 低 | 中 | 高 |
| 依賴 | 無 | 無 | HtmlAgilityPack |