2KB项目,专业的源码交易网站 帮助 收藏 每日签到

使用主题样式创建动态的 ASP.NET 服务器控件

  • 时间:2019-01-23 18:33 编辑:2KB 来源:2KB.COM 阅读:296
  • 扫一扫,手机访问
  • 分享
摘要:
ASP.NET 英文原文:Create Dynamic ASP.NET Server Control With Theme (Template) Style

下载demo - 48.9 KB

Create Dynamic ASP.NET Server Control

简介

这篇文章会向你展示如何添加、动态创建ASP.NET 服务器控件,并把控件添加到html div标签中。 创建你的ASP.NET web应用(工程),并引入你需要的主题(模板)。 按你的要求,创建一个web表单、设计页面布局、创建一个id为myFormContainer的容器div,并设置div属性server control-runat=”server”。 在这个div中,我们将要动态添加子div、label、textbox、button等控件。

动态创建ASP.NET服务器控件

所有的控件列表从 Controls json对象(一个 List)中读取。 你可以创建一个 json文件,使用 C# 类反序列化 json对象,轻松地动态创建多个带有必需属性如 id、 text等的控件。 你也可以尝试控制从数据库中读取的列表。

类、方法和事件

第一步:创建基础类

public class Control
{
    public string ID { get; set; }
    public string LabelText { get; set; }
}
public class ControlList
{
    public List<control> Controls { get; set; }
}

第二步:控件列表(从JSON对象或者数据表中获取)

// create the div to add form elements from a controls list
string json = @"{Controls:[{ID:&apos;UserName&apos;, LabelText:&apos;User Name&apos;},
{ID:&apos;EmailId&apos;, LabelText:&apos;Email Address&apos;},{ID:&apos;Password&apos;, LabelText:&apos;Password&apos;},
{ID:&apos;Phone&apos;, LabelText:&apos;Phone Number&apos;}]}";
var controls = new System.Web.Script.Serialization.JavaScriptSerializer().Deserialize<controllist>(json);

第三步:创建方法绑定控件

/// <summary>
/// Create & Add Controls to the container div
/// </summary>
/// <param name="controls"></param>
private void CreateControls(ControlList controls)
{
    foreach (var control in controls.Controls)
    {
        //Create Group Container Div
        HtmlGenericControl div = new HtmlGenericControl("div");
        div.Attributes.Add("class", "form-group");
        // create label and add to the div          
        div.Controls.Add(new Label() { Text = control.LabelText,
        AssociatedControlID = control.ID, CssClass = "col-md-2 control-label" });
        //create the div to add controls eg. textbox, checkbox etc.
        HtmlGenericControl divInner = new HtmlGenericControl("div");
        divInner.Attributes.Add("class", "col-md-10");
        //Create TextBox
        divInner.Controls.Add(new TextBox() { ID = control.ID, CssClass = "form-control" });
        //Create Validator
        divInner.Controls.Add(new RequiredFieldValidator() 
        { ControlToValidate = control.ID, CssClass = "text-danger", 
        ErrorMessage = "The user name field is required." });
        div.Controls.Add(divInner);
        Container.Controls.Add(div);
    }
    //create button with event and add to the div
    var button = new Button { ID = "btnClick", Text = "Create" };
    button.Click += btnClick_OnClick;
    Container.Controls.Add(button);
}

第四步:调用CreateControl()方法初始化OnInit事件

// <summary>
/// Load Controls on OnInit event
/// </summary>
/// <param name="e"></param>
override protected void OnInit(EventArgs e)
{
    // create the div to add form elements from a controls list
    string json = @"{Controls:[{ID:&apos;UserName&apos;, LabelText:&apos;User Name&apos;},
    {ID:&apos;EmailId&apos;, LabelText:&apos;Email Address&apos;},{ID:&apos;Password&apos;, LabelText:&apos;Password&apos;},
    {ID:&apos;Phone&apos;, LabelText:&apos;Phone Number&apos;}]}";
    var controls = new System.Web.Script.Serialization.JavaScriptSerializer().Deserialize<controllist>(json);
    CreateControls(controls); // Method with controls list param
}

本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接。 2KB翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。


2KB项目(www.2kb.com,源码交易平台),提供担保交易、源码交易、虚拟商品、在家创业、在线创业、任务交易、网站设计、软件设计、网络兼职、站长交易、域名交易、链接买卖、网站交易、广告买卖、站长培训、建站美工等服务

  • 全部评论(0)
资讯详情页最新发布上方横幅
最新发布的资讯信息
【计算机/互联网|】Nginx出现502错误(2020-01-20 21:02)
【计算机/互联网|】网站运营全智能软手V0.1版发布(2020-01-20 12:16)
【计算机/互联网|】淘宝这是怎么了?(2020-01-19 19:15)
【行业动态|】谷歌关闭小米智能摄像头,因为窃听器显示了陌生人家中的照片(2020-01-15 09:42)
【行业动态|】据报道谷歌新闻终止了数字杂志,退还主动订阅(2020-01-15 09:39)
【行业动态|】康佳将OLED电视带到美国与LG和索尼竞争(2020-01-15 09:38)
【行业动态|】2020年最佳AV接收机(2020-01-15 09:35)
【行业动态|】2020年最佳流媒体设备:Roku,Apple TV,Firebar,Chromecast等(2020-01-15 09:31)
【行业动态|】CES 2020预览:更多的流媒体服务和订阅即将到来(2020-01-08 21:41)
【行业动态|】从埃隆·马斯克到杰夫·贝佐斯,这30位人物定义了2010年代(2020-01-01 15:14)
联系我们

Q Q: 7090832

电话:400-0011-990

邮箱:7090832@qq.com

时间:9:00-23:00

联系客服
商家入住 服务咨询 投拆建议 联系客服
0577-67068160
手机版

扫一扫进手机版
返回顶部