繁体   English   中英

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

[英]Add Attributes to root HTML Element of a Custom Control

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

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

谢谢! = d

你可以在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");
        }
    }
}

如果您有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
}

你应该可以使用:

CONTROL.Attribute.Add("..") //不正确的语法

看到这个链接

编辑:样本用法

Control control = this.FindControl("body");
HtmlControl divControl = new HtmlGenericControl("div");
divControl.Attributes.Add("id","myid");
divControl.Attributes.Add("class","myclass");
control.Controls.Add(divControl);

我在查看API时发现了这种方法。

这对我来说效果很好,似乎是最合适的地方。 只是简单地覆盖。

public override void RenderBeginTag(HtmlTextWriter writer)
{
    writer.AddAttribute(HtmlTextWriterAttribute.Class, "[^_^]");
    base.RenderBeginTag(writer);
}

[编辑,在所有评论之后]简单地说, Attributes.Add("key", "value"); OnPreRender方法中工作

我认为最合适的方法或事件是:

protected override void AddAttributesToRender(HtmlTextWriter writer)
{
    writer.AddAttribute("Key", "Value");
    base.AddAttributesToRender(writer);
}

检查msdn

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM