Asp.net 网络控制中的特殊风格

Asp.net 网络控制中的特殊风格,asp.net,web-controls,Asp.net,Web Controls,我正在创建一个用于我的几个ASP.NET页面的网络控件。在一个例子中,我想添加一些特殊样式属性,例如Width和Float 因为我无法预测将来需要哪些属性,所以我希望使用控件的标记能够添加任何随机样式。我有控件,所以它支持标准样式,如颜色,宽度,等等,但不支持浮动 是否有任何方法允许在标记中指定这些属性,并使它们在呈现控件中传播,而不发生更改?我不想创建自己的自定义Float属性和任何其他可能需要的样式 我只是尝试在标记中添加style=“…”,但这只是简单地去掉,并且不会出现在呈现控件中的任何

我正在创建一个用于我的几个ASP.NET页面的网络控件。在一个例子中,我想添加一些特殊样式属性,例如
Width
Float

因为我无法预测将来需要哪些属性,所以我希望使用控件的标记能够添加任何随机样式。我有控件,所以它支持标准样式,如
颜色
宽度
,等等,但不支持
浮动

是否有任何方法允许在标记中指定这些属性,并使它们在呈现控件中传播,而不发生更改?我不想创建自己的自定义Float属性和任何其他可能需要的样式


我只是尝试在标记中添加
style=“…”
,但这只是简单地去掉,并且不会出现在呈现控件中的任何地方。

我会将CssClass属性添加到您的WebControl中。这将允许使用您的控件的任何页面提供自己的外观。

我将向您的WebControl添加CssClass属性。这将允许使用控件的任何页面提供自己的外观。

这可能不是您要查找的内容,但如果您有一个周围元素,则可以按照以下要求将样式作为字符串应用:

.ascx


当然,您在样式上没有得到任何良好的intellisense补全,这可能不是您想要的,但是如果您有一个周围的元素,您可以将样式作为字符串应用,如下所示:

.ascx


当然,你在样式上没有得到任何好的intellisense完成

我以前的回答是关于用户控件的,我错了

对于WebControl,您可以使用AddAttributesToRender方法

以下几点似乎效果不错:

    [Bindable(true)]
    [Category("Appearance")]
    [DefaultValue("")]
    [Localizable(true)]
    public string style
    {
        get
        {
            String s = (String)ViewState["style"];
            return ((s == null) ? String.Empty : s);
        }

        set
        {
            ViewState["style"] = value;
        }
    }

    protected override void AddAttributesToRender(HtmlTextWriter writer)
    {            

        base.AddAttributesToRender(writer);
        if(!string.IsNullOrEmpty(style))
        {
            writer.AddAttribute(HtmlTextWriterAttribute.Style, style);
        }

    }

编辑:将公共属性更改为“样式”,以利用intellisence

我之前的回答是关于用户控件的,我错了

对于WebControl,您可以使用AddAttributesToRender方法

以下几点似乎效果不错:

    [Bindable(true)]
    [Category("Appearance")]
    [DefaultValue("")]
    [Localizable(true)]
    public string style
    {
        get
        {
            String s = (String)ViewState["style"];
            return ((s == null) ? String.Empty : s);
        }

        set
        {
            ViewState["style"] = value;
        }
    }

    protected override void AddAttributesToRender(HtmlTextWriter writer)
    {            

        base.AddAttributesToRender(writer);
        if(!string.IsNullOrEmpty(style))
        {
            writer.AddAttribute(HtmlTextWriterAttribute.Style, style);
        }

    }

编辑:将公共属性更改为“样式”,以利用intellisence

但是只需要指定一个类,对吗?而不是特别的风格?此外,该控件实际上显示AddThis按钮,这些按钮具有自己的
属性。正确,没有特殊样式。CSS类解决方案允许您将来自己应用任何新样式(以特别方式),而无需修改控件。是的,我找到了一个浮动的解决方法:只需使用
包装即可。CssClass很复杂,因为控件本身必须使用一个特殊的类属性。但只能通过指定一个类,对吗?而不是特别的风格?此外,该控件实际上显示AddThis按钮,这些按钮具有自己的
属性。正确,没有特殊样式。CSS类解决方案允许您将来自己应用任何新样式(以特别方式),而无需修改控件。是的,我找到了一个浮动的解决方法:只需使用
包装即可。CssClass很复杂,因为控件本身必须使用特殊的类属性。该死!你在我输入D'oh时添加了一条评论!谢谢,但我没有使用ASCX文件。我写了一个从WebControl派生的类。该死!你在我输入D'oh时添加了一条评论!谢谢,但我没有使用ASCX文件。我写了一个源于WebControl的类。我有这个方法,但这是一个解决我的一些问题和顾虑的有趣方法。我有这个方法,但这是一个解决我的一些问题和顾虑的有趣方法。
    [Bindable(true)]
    [Category("Appearance")]
    [DefaultValue("")]
    [Localizable(true)]
    public string style
    {
        get
        {
            String s = (String)ViewState["style"];
            return ((s == null) ? String.Empty : s);
        }

        set
        {
            ViewState["style"] = value;
        }
    }

    protected override void AddAttributesToRender(HtmlTextWriter writer)
    {            

        base.AddAttributesToRender(writer);
        if(!string.IsNullOrEmpty(style))
        {
            writer.AddAttribute(HtmlTextWriterAttribute.Style, style);
        }

    }