Ale*_*yev 16 css asp.net dynamic-css
我在ASP.NET页面上有几个具有不同id的<li>元素:
<li id="li1" class="class1">
<li id="li2" class="class1">
<li id="li3" class="class1">
Run Code Online (Sandbox Code Playgroud)
并可以使用这样的JavaScript更改他们的类:
li1.className="class2"
Run Code Online (Sandbox Code Playgroud)
但有没有办法使用ASP.NET更改<li>元素类?它可能是这样的:
WebControl control = (WebControl)FindControl("li1");
control.CssClass="class2";
Run Code Online (Sandbox Code Playgroud)
但FindControl()不能像我预期的那样工作.有什么建议?
提前致谢!
小智 30
添加
runat="server"HTML页面
然后像这样在asp.Net页面中使用attribute属性
li1.Attributes["Class"] = "class1";
li2.Attributes["Class"] = "class2";
Run Code Online (Sandbox Code Playgroud)
nas*_*ski 12
如果在<li>中包含runat ="server",FindControl将起作用
<li id="li1" runat="server">stuff</li>
Run Code Online (Sandbox Code Playgroud)
否则,服务器端代码无法"看到"它.
小智 5
FindControl 方法搜索服务器控件。也就是说,它查找属性“runat”设置为“server”的控件,如下所示:
<li runat="server ... ></li>
Run Code Online (Sandbox Code Playgroud)
由于您的 <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());
Run Code Online (Sandbox Code Playgroud)
这将找到li元素并在其上设置CSS类.
using System.Web.UI.HtmlControls;
HtmlGenericControl liItem = (HtmlGenericControl) ctl.FindControl("liItemID");
liItem.Attributes.Add("class", "someCssClass");
Run Code Online (Sandbox Code Playgroud)
请记住添加runat="server"其他人提到的属性.
| 归档时间: |
|
| 查看次数: |
57500 次 |
| 最近记录: |