asp.net服务器控件开发系列一

最近想写写博客记录下自己学习开发服务器控件。

第一步:搭建环境。

1、新建一个项目类库,用于保存控件;

2、新建一个Web工程,用于调用控件;

如图:

第二步:在控件类库下,新建一个服务器控件类TextBox.cs文件。代码如下:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace JHSoft.UI.Web.Controls
{
    [DefaultProperty("Text")]
    [ToolboxData("<{0}:TextBox runat=server></{0}:TextBox>")]
    public class TextBox : WebControl
    {
        [Bindable(true)]
        [Category("Appearance")]
        [DefaultValue("")]
        [Localizable(true)]
        public string Text
        {
            get
            {
                String s = (String)ViewState["Text"];
                return ((s == null) ? String.Empty : s);
            }

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

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

修改方法:RenderContents

  protected override void RenderContents(HtmlTextWriter output)
        {
            output.Write("<input type=‘text‘ value=‘" + Text + "‘/>");
        }

第三步:

1、引用控件类库。

2、在Webconfig中注册控件前缀

3、在Web工程中,新建一个页面TextBox.aspx,调用新建的服务器控件<c:TextBox>

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="TextBox.aspx.cs" Inherits="JHSoft.SYS.Web.TextBox" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title></title>
</head>
<body>
    <form id="form1" runat="server">

        <c:TextBox runat="server" Text="Test"></c:TextBox>

    </form>
</body>
</html>

需要说明的是:

此处的控件 <c:TextBox runat="server" Text="Test"></c:TextBox>,执行完成后,生成的html代码是:

TextBox.cs类中的

protected override void RenderContents(HtmlTextWriter output)
{
output.Write("<input type=‘text‘ value=‘" + Text + "‘/>");   //生成的普通控件,Text为显示的值
}

时间: 2024-11-08 21:14:39

asp.net服务器控件开发系列一的相关文章

Asp.Net服务器控件开发的Grid实现(一)

使用Asp.Net做Web开发时,系统提供的控件,有时难以达成所要的目的.这时,有多种方式可以解决,比如采用html+js的形式,在前端布局出所要的界面,然后再通过ajax等方式去获取数据,以达成目的. 但这样做,很是费劲,特别是当布局出来的界面需要重用的时候,更加费劲.有人,会直接将该界面的代码进行拷贝,但这对后来的维护必然带来更大的问题.所以就考虑,有没有一种方式可以让布局得到重用,又便于维护的.Asp.Net的控件可以很方便的布局,同时又能在后台中直接操作控件,实现相关的数据逻辑.所以就想

Asp.Net服务器控件开发的Grid实现(二)

我们先来实现Grid类,代码如下: Grid.cs using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Web.UI; namespace AspNetS

Asp.Net服务器控件开发的Grid实现(四)回发事件

在使用Grid的时候,会用到链接跳转.如果只是普通的链接跳转,那只要使用a标签的href就可以实现.但是有时,我们希望在链接跳转的时候,能够引发回发事件,在后台作出一定的处理,然后再跳转.这样要如何实现呢?我们可以定义一个LinkButtonField来实现.代码如下 using System; using System.Collections.Generic; using System.ComponentModel; using System.Linq; using System.Text;

Asp.Net服务器控件开发的Grid实现(三)

下面是GridColumnsEditor的实现代码: GridColumnsEditor.cs using System; using System.Collections.Generic; using System.ComponentModel.Design; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Web.UI.WebControls; namespace AspNetS

ASP.NET Core开发-后台任务利器Hangfire使用

ASP.NET Core开发系列之后台任务利器Hangfire 使用. Hangfire 是一款强大的.NET开源后台任务利器,无需Windows服务/任务计划程序. 可以使用于ASP.NET 应用也可以使用于控制台.Hangfire 只需简单几句代码即可创建新的不同种类的任务. 目前 Hangfire 已经支持.NET Core ,现在就给大家讲解下在ASP.NET Core 里的使用. Hangfire GitHub:https://github.com/HangfireIO/Hangfir

高性能Web开发系列

1. 高性能WEB开发基础 http://www.uml.org.cn/net/201404225.asp 2. 高性能WEB开发进阶(上) http://www.uml.org.cn/net/201404235.asp 3. 高性能WEB开发进阶(下) http://www.uml.org.cn/net/201404245.asp 4. 高性能WEB开发经验分享 http://www.uml.org.cn/net/201404255.asp 高性能Web开发系列

ASP.NET 2.0服务器控件开发的基本概念(转载)

利用ASP.NET 2.0技术,创建Web自定义服务器控件并不是一件轻松的事情.因为,这需要开发人员了解并能够灵活应用多种Web开发技术,例如,CSS样式表.客户端 脚本语言..NET开发语言.服务器控件开发技术,甚至是当前最火的AJAX技术等等.虽然现实如此"艰难",但是这种开发技术也不是真的难到不可掌握. 事事都要从头做起.本文将针对利用asp.net 2.0技术,创建Web自定义服务器控件的基础知识进行详细介绍,内容包括:服务器控件概念.控件类型.生命周期等. 1.ASP.NET

ABP(现代ASP.NET样板开发框架)系列之11、ABP领域层——仓储(Repositories)

点这里进入ABP系列文章总目录 基于DDD的现代ASP.NET开发框架--ABP系列之11.ABP领域层——仓储(Repositories) ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目)”的简称. ABP的官方网站:http://www.aspnetboilerplate.com ABP在Github上的开源项目:https://github.com/aspnetboilerplate 本文由台湾-小张提供翻译 仓储定义:“在领域层和数据映射层的中

ASP.NET程序开发范例宝典

在整理资料时发现一些非常有用的资料源码尤其是初学者,大部分是平时用到的知识点,可以参考其实现方法,分享给大家学习,但请不要用于商业用途. 如果对你有用请多多推荐给其他人分享. 点击对应章节标题下载本章节下所有源代码. 目录: 第2章 HTML开发与实践 15 2.1 框架的使用 16 实例009 使用FrameSet框架布局聊天室 16 实例010 使用IFrame框架布局企业管理系统 17 2.2 滚屏的实现 18 实例011 滚动显示博客公告 18 实例012 滚屏效果并实现超级链接 20