首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >扩展ASP.NET面板

扩展ASP.NET面板
EN

Stack Overflow用户
提问于 2011-09-04 16:39:54
回答 2查看 985关注 0票数 2

我正在尝试创建一个扩展ASP.NET面板的新服务控件。

无论何时我使用我的面板,div等渲染都是正确的。但框中的输入仅为: title

ie:如果我这样做了:

代码语言:javascript
运行
复制
<cc1:RoundedCornerBox id="MyBox" BoxWidth="100" BoxHeight="200"> This is the content that   should be displayeed </cc1:RoundedBox>

所有显示的内容都是: MyBox

(在正确的框中)

这是我的代码:

代码语言:javascript
运行
复制
[DefaultProperty("Text")]
[ToolboxData("<{0}:RoundedCornerBox runat=server></{0}:RoundedCornerBox>")]
public class RoundedCornerBox : System.Web.UI.WebControls.Panel
{

public int BoxWidth { get; set; }
public int BoxHeight { get; set; }


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

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

protected override void Render(HtmlTextWriter writer)
{
    base.Render(writer);
}
protected override void RenderContents(HtmlTextWriter output)
{
    output.Write(Text);
}


public override void RenderBeginTag(HtmlTextWriter writer)
{
    base.RenderBeginTag(writer);
    writer.Write("<div class=\"roundedcornr_lt\"></div>\n");
    writer.Write("<div class=\"roundedcornr_top\" style=\"width:" + BoxWidth.ToString() + "px\"></div>\n");
    writer.Write("<div class=\"roundedcornr_rt\"></div>\n");
    writer.Write("<div class=\"clear\"></div>\n");
    writer.Write("<div class=\"roundedcornr_lside\" style=\"height:" + BoxHeight.ToString() + "px\"></div>\n");
    writer.Write("<div style=\"width:" + BoxWidth.ToString() + "px; height:" + BoxHeight.ToString() + "px; background:white; float:left\">\n");



}

public override void RenderEndTag(HtmlTextWriter writer)
{
    base.RenderEndTag(writer);
    writer.Write("</div>\n");
    writer.Write("<div class=\"roundedcornr_rside\" style=\"height:" + BoxHeight.ToString() + "px\"></div>\n");
    writer.Write("<div class=\"clear\"></div>\n");
    writer.Write("<div class=\"roundedcornr_bl\"></div>\n");
    writer.Write("<div class=\"roundedcornr_btm\" style=\"width:" + BoxWidth.ToString() + "px\"></div>");
    writer.Write("<div class=\"roundedcornr_br\"></div>");
    writer.Write("<div class=\"clear\"></div>\n");

}
EN

回答 2

Stack Overflow用户

发布于 2011-09-04 17:18:14

如果你想继承Label,你可以这样做:

代码语言:javascript
运行
复制
        get
        {
            string result = (string) ViewState["Text"];
            if(result != null)
                return result;
            result = (string) base.Text;
            if (!string.IsNullOrEmpty(result))
                return result;
            return "[" + this.ID + "]";
        }

不幸的是,没有“正常”的方法来获取Panel的内部文本,但这是一种变通方法:

代码语言:javascript
运行
复制
        get
        {
            string result = (string) ViewState["Text"];
            if(result != null)
                return result;
            result = ((LiteralControl) this.Controls[0]).Text;
            if (!string.IsNullOrEmpty(result))
                return result;
            return "[" + this.ID + "]";
        }

您基本上要做的是,获取面板中的文本(由ASP.NET自动插入到文字型子控件中),如果没有ViewState数据,则输出它。

票数 0
EN

Stack Overflow用户

发布于 2014-09-21 04:46:33

有一种更简单的方法可以做到这一点。

CSS

  • 创建您的控件并使其扩展其构造函数,或者在OnInit()方法中,将CssClass属性设置为roundedbox样式(或任何其他名称)。

  • 将此样式添加到您的CSS并使其包含border-radius.

例如:

代码语言:javascript
运行
复制
.roundedbox {
    border-radius: 3px;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7298130

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档