public class CustCtl : WebControl
{
protected override System.Web.UI.HtmlTextWriterTag TagKey
{
get
{
return HtmlTextWriterTag.Div;
}
}
}
使用这个裸骨控制,它会将根元素呈现为Div标记。但是,如何向该控件将呈现的根HTML元素添加属性...例如样式或id。
谢谢! = d
答案 0 :(得分:4)
你可以在OnPreRender活动中做这样的事情
public class CustCtl : WebControl
{
protected override void OnPreRender(EventArgs e)
{
base.OnPreRender(e);
WebControl parent = Parent as WebControl;
if (parent != null)
{
parent.Attributes.Add("key", "value");
}
}
}
答案 1 :(得分:0)
如果您有HtmlTextWriter
,则可以在呈现标记之前先添加一些属性。例如:
public void writeDivWithStyle(HtmlTextWriter writer, string style)
{
writer.AddAttribute(HtmlTextWriterAttribute.Style, style);
writer.RenderBeginTag(HtmlTextWriterTag.Div);
// more code here
writer.RenderEndTag(); // close the DIV
}
答案 2 :(得分:0)
你应该可以使用:
CONTROL.Attribute.Add("..")
//不正确的语法
请参阅this link
编辑:样本用法
Control control = this.FindControl("body");
HtmlControl divControl = new HtmlGenericControl("div");
divControl.Attributes.Add("id","myid");
divControl.Attributes.Add("class","myclass");
control.Controls.Add(divControl);
答案 3 :(得分:0)
我在查看API时发现了这种方法。
这对我来说效果很好,似乎是最合适的地方。只需简单覆盖。
public override void RenderBeginTag(HtmlTextWriter writer)
{
writer.AddAttribute(HtmlTextWriterAttribute.Class, "[^_^]");
base.RenderBeginTag(writer);
}
答案 4 :(得分:0)
[编辑,在所有评论之后]简单地说,Attributes.Add("key", "value");
方法中的OnPreRender
答案 5 :(得分:0)
我认为最合适的方法或事件是:
protected override void AddAttributesToRender(HtmlTextWriter writer)
{
writer.AddAttribute("Key", "Value");
base.AddAttributesToRender(writer);
}
检查msdn。