将属性添加到自定义控件的根HTML元素

时间:2011-01-05 21:35:17

标签: c# asp.net

public class CustCtl : WebControl
{
    protected override System.Web.UI.HtmlTextWriterTag TagKey
    {
        get
        {
            return HtmlTextWriterTag.Div;
        }
    }       
}

使用这个裸骨控制,它会将根元素呈现为Div标记。但是,如何向该控件将呈现的根HTML元素添加属性...例如样式或id。

谢谢! = d

6 个答案:

答案 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