最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

ASP.NET中使用用戶控件

 更新時間:2022年05月07日 11:29:57   作者:springsnow  
這篇文章介紹了ASP.NET中使用用戶控件的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下

一、概述:

與WEB窗體頁相同,程序員可以使用任何文本編輯器創(chuàng)作用戶控件,或者使用代碼隱藏類開發(fā)用戶控件。此外,與WEB窗體頁一樣,用戶控件可以在第一次請求時被編譯并存儲在服務(wù)器內(nèi)存中,從而縮短以后請求的響應(yīng)時間。
但與WEB窗體頁不同的是,不能獨(dú)立地請求用戶控件,用戶控件必須包括在WEB窗體頁內(nèi)才能使用。
用戶控件減少了代碼的重用性,一個用戶控件就是一個簡單的ASP.NET頁面,不過他是包含在另一個ASP.NET頁面的,

用戶控件文件有如下特點(diǎn):

  • 擴(kuò)展名為:.ascx。

  • 用戶控件中沒有“@ page”指令,而是包含“@ Control”指令,該指令對配置及其他的屬性進(jìn)行定義。

  • 用戶控件不能作為獨(dú)立文件運(yùn)行,而是必須像處理控件一樣,將它們添加到Asp.net頁中。

  • 用戶控件中沒有html,body,或form元素,這些元素不許位于宿主中。

二、創(chuàng)建用戶控件

1.先創(chuàng)建一個ASP.NET Web應(yīng)用程序又見“添加”、點(diǎn)擊“新建項(xiàng)”,選擇 Web用戶控件點(diǎn)擊添加。

2.可在用戶控件中添加想要使用的控件。

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="Content.ascx.cs" Inherits="WebApplication4.Content" %>
<div>
    <span></span>
    <asp:Label ID="lblTitle" runat="server"></asp:Label>
</div>

3.在用戶控件后臺寫入代碼。

    public partial class Content : System.Web.UI.UserControl
    {
        public string hif { set; get; }
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                lblTitle.Text = hif;
            }
        }
    }

【注意】當(dāng)用戶控件包括在WEB窗體頁中時,此用戶控件中包含的任何ASP.NET服務(wù)器控件的所有屬性和方法都將提升為此用戶控件的公共屬性和方法。

三、使用用戶控件

1、聲明方式使用用戶控件

把用從解決方案管理器將戶控件Content.ascx拉入到需要的頁面,并引用用戶控件中的屬性和方法

在頁面中注冊用戶控件

<%@ Register src="Content.ascx" tagname="Content" tagprefix="uc1" %>

或在Web.config中注冊用戶控件:

<controls>
   <add tagPrefix="uc1" src="~/Controls/Content.ascx"" tagName="Content"/>
</controls>

調(diào)用用戶控件:

<uc1:Content ID="Content1" runat="server" />

服務(wù)端代碼:

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        Content1.hif = "aaa";    
    }
}

2、以編程方式加載用戶控件

可以使用Page類的LoadControl方法以編程方式載入用戶控件。

Content Content2 = (Content)this.LoadControl("Content.ascx");
Content2.hif = "123";
this.Controls.Add(Content2);

3、序列化用戶控件成html

利用用戶控件的轉(zhuǎn)成字符串返回到客戶端,用戶ajax請求html內(nèi)容。

public class ViewManager<T> where T : UserControl
{
    private Page m_pageHolder;
 
    public T LoadViewControl(string path)
    {
        this.m_pageHolder = new Page();
        return (T)this.m_pageHolder.LoadControl(path);
    }
 
    public string RenderView(T control)
    {
        StringWriter output = new StringWriter();
        control.InitializeUserControl();
        this.m_pageHolder.Controls.Add(control);
        HttpContext.Current.Server.Execute(this.m_pageHolder, output, false);
 
        return output.ToString();
    }
}

ViewManager中只有兩個方法:LoadViewControl和RenderView。LoadViewControl方法的作用是創(chuàng)建一個Control實(shí)例并返回,RenderView方法的作用則就是生成HTML了。這個實(shí)現(xiàn)方式的技巧在于使用了一個新建的Page對象作為生成控件的“容器”,而最后其實(shí)我們是將Page對象的整個生命周期運(yùn)行一遍,并且將結(jié)果輸出。由于這個空的Page對象不會產(chǎn)生任何其他代碼,因此我們得到的,就是用戶控件生成的代碼了。

ViewManager<Content> load = new ViewManager<Content>();
Content Content2 = load.LoadViewControl("Content.ascx") as Content;
Content2.hif = "123";
string resultHtml = load.RenderView(Content2);

四、用戶控件使用小結(jié)

(1)用戶控件使開發(fā)人員能夠使用編寫WEB窗體頁的相同編程技巧輕松地定義自定義控件。 作為約定,用.ascx文件擴(kuò)展名指示這樣的控件。這樣可以確保用戶控件文件不能作為獨(dú)立的WEB窗體頁執(zhí)行。
(2)用戶控件通過Register指令包括在另一WEB窗體頁中,該指令指定TagPrefix、TagName和Src location。
(3)注冊了用戶控件后,可以像普通的服務(wù)器控件那樣將用戶控件標(biāo)記放置在WEB窗體頁中(包括runat="server"屬性)。在包含WEB窗體頁中將用戶控件的公共字段、屬性和方法提升為該控件的公共屬性(標(biāo)記屬性)和方法。
(4)用戶控件參與每個請求的整個執(zhí)行生存期,并且可以處理自己的事件,封裝來自包含WEB窗體頁的一些頁邏輯。
(5)用戶控件不應(yīng)包含任何窗體控件,而應(yīng)依靠其包含WEB窗體頁在必要時包括窗體控件。
(6)可以使用System.WEB.UI.Page類的LoadControl方法以編程方式創(chuàng)建用戶控件。用戶控件的類型由ASP.NET運(yùn)行庫決定,遵循約定文件名_擴(kuò)展名。
(7)只有當(dāng)為用戶控件包括了Register指令時,用戶控件的強(qiáng)類型才能由包含WEB窗體頁使用(即使沒有實(shí)際聲明的用戶控件標(biāo)記)。

五、結(jié)束語

在編寫WEB應(yīng)用程序時,如果將可能重復(fù)出現(xiàn)的元素都用用戶控件來實(shí)現(xiàn),那將大大減少維護(hù)代碼的代價。而且在修改代碼時,記得修改一段代碼卻忘了修改另一段同樣代碼的情況也將不存在了。代碼越短,出現(xiàn)錯誤的因素越少,出現(xiàn)錯誤的可能性就越小。

用戶控件和自定義控件的區(qū)別如下:

到此這篇關(guān)于ASP.NET中使用用戶控件的文章就介紹到這了。希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • ASP.NET Core基礎(chǔ)之啟動設(shè)置

    ASP.NET Core基礎(chǔ)之啟動設(shè)置

    這篇文章介紹了ASP.NET Core基礎(chǔ)之啟動設(shè)置,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-02-02
  • Effective C# 使用成員初始化器而不是賦值語句

    Effective C# 使用成員初始化器而不是賦值語句

    一般情況下,一個類都會有多個構(gòu)造函數(shù)。隨著時間的推移,成員變量、構(gòu)造函數(shù)不斷增加
    2012-11-11
  • ASP.NET中Application、Cookie、Session、Cache和ViewState

    ASP.NET中Application、Cookie、Session、Cache和ViewState

    本文主要介紹Application、Cookie、Session、Cache和ViewState,并總結(jié)了在什么情況下使用他們,希望對大家有所幫助。
    2016-04-04
  • asp.net中將某字符串切割成陣列并排序列出

    asp.net中將某字符串切割成陣列并排序列出

    老師布置的另外一道題是將字符串"a;b;d;z;y;u"切割成陣列并排序列出。老師出這題也許是讓Insus.NET掌握或復(fù)習(xí)Array.Sort()函數(shù),不管怎樣,先按自己的想法實(shí)現(xiàn),然后是等老師的意見
    2012-05-05
  • ASP.NET Table 表格控件的使用方法

    ASP.NET Table 表格控件的使用方法

    使用 Table 控件可以在 ASP.NET 網(wǎng)頁上創(chuàng)建服務(wù)器可編程的表格。如果要創(chuàng)建的是靜態(tài)表格(運(yùn)行時不會在其中添加或更改內(nèi)容的表格),則應(yīng)使用 HTML 表格,而不是 Table 控件。
    2016-04-04
  • .NET中的字符串駐留池介紹

    .NET中的字符串駐留池介紹

    這篇文章介紹了.NET中的字符串駐留池,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-03-03
  • asp.net 新聞列表樣式代碼

    asp.net 新聞列表樣式代碼

    asp.net下新聞列表樣式顯示代碼,使用Repeater控件。
    2011-02-02
  • .Net行為型設(shè)計(jì)模式之狀態(tài)模式(State)

    .Net行為型設(shè)計(jì)模式之狀態(tài)模式(State)

    這篇文章介紹了.Net行為型設(shè)計(jì)模式之狀態(tài)模式(State),文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-05-05
  • .Net創(chuàng)建型設(shè)計(jì)模式之工廠方法模式(Factory?Method)

    .Net創(chuàng)建型設(shè)計(jì)模式之工廠方法模式(Factory?Method)

    這篇文章介紹了.Net設(shè)計(jì)模式之工廠方法模式(Factory?Method),文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-05-05
  • asp.net平臺下C#實(shí)現(xiàn)Socket通信

    asp.net平臺下C#實(shí)現(xiàn)Socket通信

    這篇文章介紹了asp.net平臺下C#實(shí)現(xiàn)Socket通信的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-01-01

最新評論

临安市| 沭阳县| 福泉市| 德江县| 政和县| 合水县| 莱州市| 民丰县| 建湖县| 北碚区| 馆陶县| 怀远县| 灵宝市| 云南省| 抚州市| 茶陵县| 南丹县| 壶关县| 林甸县| 鲁山县| 新宁县| 沙洋县| 衡山县| 临海市| 如东县| 浙江省| 康定县| 新野县| 伊春市| 泌阳县| 丽水市| 龙川县| 靖安县| 博白县| 定远县| 九龙坡区| 湖北省| 长丰县| 恩平市| 石嘴山市| 大邑县|