在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ C#/ ASP.NET自定義控件
ASP.NET調(diào)試
ASP.NET Web Services
ASP.NET緩存
ASP.NET多線程
ASP.NET面板控件
ASP.NET數(shù)據(jù)綁定
ASP.NET數(shù)據(jù)源
ASP.NET個(gè)性化
ASP.Net教程
ASP.NET Ajax控件
ASP.NET生命周期
ASP.NET HTML服務(wù)器
ASP.NET簡(jiǎn)介
ASP.NET驗(yàn)證器
ASP.NET多視圖
ASP.NET網(wǎng)站配置
ASP.NET錯(cuò)誤管理
ASP.NET自定義控件
ASP.NET LINQ
ASP.NET AdRotator控件
ASP.NET客戶端
ASP.NET文件上傳
ASP.NET服務(wù)器控件
ASP.NET開發(fā)環(huán)境配置
ASP.NET管理狀態(tài)
ASP.NET服務(wù)端
ASP.NET數(shù)據(jù)庫訪問(Access)
ASP.NET基本控件
ASP.NET安全
ASP.NET指令
ASP.NET事件處理
ASP.NET第一個(gè)程序
ASP.NET日歷控件

ASP.NET自定義控件

ASP.NET允許用戶創(chuàng)建自己的控件。這些用戶定義的控件分為:

  • 用戶控件
  • 自定義控件

用戶控件

用戶控件的行為與微型ASP.NET頁面或Web表單類似,可以被許多其他頁面使用。這些是從System.Web.UI.UserControl類派生的。這些控件具有以下特征:

  • 它們有一個(gè).ascx擴(kuò)展名。
  • 它們可能不包含任何<html><body><form>標(biāo)簽。
  • 它們有一個(gè)控件指令,而不是一個(gè)Page指令。

為了理解這個(gè)概念,讓我們創(chuàng)建一個(gè)簡(jiǎn)單的用戶控件,它將作為頁面的頁腳。要?jiǎng)?chuàng)建和使用用戶控件,請(qǐng)執(zhí)行以下步驟:

  • 創(chuàng)建一個(gè)新的Web應(yīng)用程序(ASP.NET網(wǎng)站項(xiàng)目:UserControls )。
  • 右鍵單擊【解決方案資源管理器】上的項(xiàng)目文件夾,然后選擇【添加新項(xiàng)目】。
  • 從【添加新項(xiàng)目】對(duì)話框中選擇【Web用戶控件】并將其命名為footer.ascx。 最初,footer.ascx只包含一個(gè)控件指令。
    <%@ Control Language="C#" AutoEventWireup="true" CodeBehind="footer.ascx.cs" 
     Inherits="customcontroldemo.footer" %>
    
  • 將下面的代碼添加到文件中(上面代碼保持不變,新增下面代碼):

    <table>
     <tr>
        <td align="center"> Copyright ?2012 - 2018 Yiibai Yiibai</td>
     </tr>
    
     <tr>
        <td align="center"> Location: Haikou </td>
     </tr>
    </table>
    

要將用戶控件添加到網(wǎng)頁,要將Register指令和用戶控件的一個(gè)實(shí)例添加到頁面。Default.aspx文件中的代碼如下:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<%@ Register Src="~/footer.ascx" TagName="footer" TagPrefix="Tfooter" %>
<!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">
         <div>

            <asp:Label ID="Label1" runat="server" Text="Welcome to ASP.Net Yiibai "></asp:Label>


         </div>
        <hr />
         <Tfooter:footer ID="footer1" runat="server" />

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

需要注意以下幾點(diǎn):

  • Register指令為控件指定標(biāo)簽名稱和標(biāo)簽前綴。
    <%@ Register Src="~/footer.ascx" TagName="footer" TagPrefix="Tfooter" %>
    
  • 在頁面上添加用戶控件時(shí),應(yīng)使用以下標(biāo)記名稱和前綴:
    <Tfooter:footer ID="footer1" runat="server" />
    

運(yùn)行上面項(xiàng)目,得到以下結(jié)果 -

自定義控件

自定義控件作為單獨(dú)的程序集部署。 它們被編譯成動(dòng)態(tài)鏈接庫(DLL),并用作其他ASP.NET服務(wù)器控件。它們可以通過以下任何一種方式創(chuàng)建:

  • 通過從現(xiàn)有控件派生自定義控件
  • 通過組成一個(gè)新的自定義控件組合兩個(gè)或更多現(xiàn)有的控件。
  • 從基控制類派生。

為了理解這個(gè)概念,讓我們創(chuàng)建一個(gè)自定義控件,它將簡(jiǎn)單地在瀏覽器上顯示一條文本消息。 要?jiǎng)?chuàng)建此控件,請(qǐng)執(zhí)行以下步驟:

  • 創(chuàng)建一個(gè)新的網(wǎng)站(ASP.NET網(wǎng)站項(xiàng)目:CustomControls )。右鍵單擊【解決方案資源管理器】中樹頂部的解決方案(不是項(xiàng)目)。

  • “新建項(xiàng)目”對(duì)話框中,從項(xiàng)目模板中選擇“ASP.NET服務(wù)器控件”(如果沒有找到,請(qǐng)從左側(cè)的聯(lián)機(jī)中搜索安裝)。

上述步驟添加了一個(gè)新項(xiàng)目,并為該解決方案創(chuàng)建了一個(gè)完整的自定義控件,稱為ServerControl1。要使用此控件,必須在將網(wǎng)頁注冊(cè)到網(wǎng)頁之前將其添加為網(wǎng)站的引用。 要添加對(duì)現(xiàn)有項(xiàng)目的引用,請(qǐng)右鍵單擊該項(xiàng)目名稱(不是解決方案),然后單擊添加引用。

從添加引用對(duì)話框的項(xiàng)目選項(xiàng)卡中選擇CustomControls項(xiàng)目。 解決方案資源管理器應(yīng)顯示參考如下圖所示 -

要在頁面上使用該控件,請(qǐng)?jiān)?code>@Page指令下添加Register指令:

<%@ Register Assembly="CustomControls"  Namespace="CustomControls"  TagPrefix="ccs" %>

下面就可以使用該控件,與其他控件類似。

<form id="form1" runat="server">
   <div>
      <ccs:ServerControl1 runat="server" Text = "I am a Custom Server Control" />
   </div> 
</form>

在上面,我們?cè)O(shè)置了自定義控件的Text屬性的值。ASP.NET在創(chuàng)建控件時(shí)默認(rèn)添加了此屬性。但還需要以下后端代碼實(shí)現(xiàn)顯示功能。ServerControl1.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 CustomControls
{
   [DefaultProperty("Text")]
   [ToolboxData("<{0}:ServerControl1 runat=server></{0}:ServerControl1 >")]

   public class ServerControl1 : WebControl
   {
      [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 RenderContents(HtmlTextWriter output)
      {
         output.Write(Text);
      }
   }
}