ASP.NET 2.0 自訂控制項開發(一)頁面呈現

來源:互聯網
上載者:User

編寫自訂控制項首先要選擇基類:

1.所有的標準控制項都可以做為基類。你可以選擇你需要的標準控制項來重寫新的控制項。

2.如果從標準控制項找不到適合的基類,則可以使用以下三種中的一種

a)System.Web.UI.Control(所有ASP.NET控制項的基類)

b)System.Web.UI.WebControls.WebControl(繼承自a)

c)System.Web.UI.WebControls.CompositeControl(繼承自b)

一:Control的呈現方法

     Control是通過重寫它的Render()方法來實現呈現的。

     Render方法的聲明:

Code
protected internal vitrual void Render(HtmlTextWrite output)
{
   //todo
}

     protected和virtual二個Attribute得存在,所以繼承於Control的類可以重寫Render方法來實現自己的呈現邏輯。

     internal這個Attribute使得該方法只能在ASP.NET架構中直接調用,而不能在其他代碼中直接調用。

 

Code
using System;
using System.Collections.Generic;
using System.Text;
using System.Web.UI;

namespace ikeControl
{
    public class LoginTex:Control
    {
        protected override void Render(HtmlTextWriter writer)
        {
            //開始最外層的Div
            writer.RenderBeginTag(HtmlTextWriterTag.Div);
            //添加文字
            writer.WriteLine("使用者名稱  ");
            //添加使用者名稱登入框樣式和屬性
            writer.AddAttribute(HtmlTextWriterAttribute.Type, "text");
            writer.AddStyleAttribute(HtmlTextWriterStyle.Width, "100px");
            writer.AddStyleAttribute(HtmlTextWriterStyle.FontSize, "12px");
            writer.AddStyleAttribute(HtmlTextWriterStyle.Color, "0000FF");
            writer.AddStyleAttribute(HtmlTextWriterStyle.TextDecoration, "blink");

            //開始使用者名稱登入框
            writer.RenderBeginTag(HtmlTextWriterTag.Input);
            //添加分行符號號
            writer.RenderBeginTag(HtmlTextWriterTag.Br);
            //結束分行符號號
            writer.RenderEndTag();
            //添加密碼文字
            writer.WriteLine("密    碼  ");
            //結束使用者名稱登入框
            writer.RenderEndTag();
            //添加密碼登入框樣式和屬性
            writer.AddAttribute(HtmlTextWriterAttribute.Type, "password");
            writer.AddStyleAttribute(HtmlTextWriterStyle.FontSize, "12px");
            writer.AddStyleAttribute(HtmlTextWriterStyle.BackgroundColor, "#FF00FF");
            //開始密碼登入框
            writer.RenderBeginTag(HtmlTextWriterTag.Input);
            //結束密碼登入框
            writer.RenderEndTag();
            //結束最外層Div
            writer.RenderEndTag();
        }
    }
}

1.當我們把他添加到頁面的時候,IDE會自動添加這樣一句代碼

Code
<%@ Register Assembly="ikeControl" Namespace="ikeControl" TagPrefix="ike" %>

 TagPrefix屬性是聲明控制項首碼,IDE預設是ccl,當然我們可以自己來定義為自己喜歡的。(最好不要改成asp,免得和標準控制項混淆)

  自訂TagPreFix有3種方法:

1)在ASPX頁面中修改,這樣只會影響當前頁面的。而不能修改整個項目。

2)修改整個項目的,需要在web.config檔案中修改,在System.web下加上下面一段代碼

Code
<pages>
        <controls>
          <add assembly="ikeControl" namespace="ikeControl" tagPrefix="ike"/>
        </controls>
      </pages>

3)編譯dll前在properties檔案中AssemblyInfo.cs加

Code
using System.Web.UI;
using System.ComponentModel;
[assembly: TagPrefix("LoginText", "ike")]

Tagprefix("命名空間","控制項首碼")

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.