18

我在 ASP.NET 页面上有几个具有不同 id 的 <li> 元素:

<li id="li1" class="class1">
<li id="li2" class="class1">
<li id="li3" class="class1">

并且可以像这样使用 JavaScript 更改他们的类:

li1.className="class2"

但是有没有办法使用 ASP.NET 来改变 <li> 元素类?它可能是这样的:

WebControl control = (WebControl)FindControl("li1");
control.CssClass="class2";

但是 FindControl() 并没有像我预期的那样工作。有什么建议么?

提前致谢!

4

8 回答 8

30

runat="server"在您的 HTML 页面中添加

然后像这样在你的asp.Net页面中使用属性属性

li1.Attributes["Class"] = "class1";
li2.Attributes["Class"] = "class2";
于 2008-12-29T14:30:47.747 回答
12

如果您在 <li> 中包含 runat="server",FindControl 将起作用

<li id="li1" runat="server">stuff</li>

否则,您的服务器端代码无法“看到”它。

于 2008-09-23T12:49:39.620 回答
5

FindControl 方法搜索服务器控件。也就是说,它会查找属性“runat”设置为“server”的控件,如下所示:

<li runat="server ... ></li>

因为您的 <li> 标记不是服务器控件,所以 FindControl 找不到它们。您可以将“runat”属性添加到这些控件或使用 ClientScript.RegisterStartupScript 包含一些客户端脚本来操作类,例如

System.Text.StringBuilder sb = new System.Text.StringBuilder();
sb.Append("<script language=\"javascript\">");
sb.Append("document.getElementById(\"li1\").className=\"newClass\";")
sb.Append("</script>");
ClientScript.RegisterStartupScript(this.GetType(), "MyScript", sb.ToString());
于 2008-09-23T13:13:09.423 回答
5

这将找到 li 元素并在其上设置一个 CSS 类。

using System.Web.UI.HtmlControls;

HtmlGenericControl liItem = (HtmlGenericControl) ctl.FindControl("liItemID");
liItem.Attributes.Add("class", "someCssClass");

请记住添加runat="server"其他人提到的属性。

于 2010-01-20T05:58:30.460 回答
4

你必须设置 runat="server" 像:

<li id="li1" runat="server">stuff</li>
于 2008-09-23T12:48:48.000 回答
3

如果您想应用样式,请尝试以下操作:

li1.Style.Add("background-color", "black");

对于 CSS,您可以尝试以下语法:

li1.Attributes.Add("class", "clsItem");
于 2012-08-09T08:49:34.027 回答
1

Leaf Dev 为此提供了解决方案,但在“ctl”的位置,您需要插入“Master”。

无论如何它对我有用:

using System.Web.UI.HtmlControls;

HtmlGenericControl liItem = (HtmlGenericControl) ctl.FindControl("liItemID");
liItem.Attributes.Add("class", "someCssClass");
于 2012-07-06T07:37:10.027 回答
0

如果你想添加一些样式,你也可以试试这个:

li1.Style.add("color","Blue");
li2.Style.add("text-decoration","line-through");
于 2012-06-06T09:47:32.553 回答