當前位置:首頁 » 網頁前端 » cweb用戶控制項
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

cweb用戶控制項

發布時間: 2022-06-30 20:35:01

㈠ ASP.NET中,在Web窗體頁上注冊一個用戶控制項,指定該控制項的名稱為」Mike」,正確的注冊指令為()

BtagName就是指明名稱,tagprefix是引用空間名,src是鏈接該控制項的路徑

㈡ ASP.NET里用戶控制項和WEB窗體的區別

用戶控制項使程序員能夠很容易地跨ASP.NET WEB應用程序劃分和重復使用公共UI功能。與WEB窗體頁相同,程序員可以使用任何文本編輯器創作用戶控制項,或者使用代碼隱藏類開發用戶控制項。此外,與WEB窗體頁一樣,用戶控制項可以在第一次請求時被編譯並存儲在伺服器內存中,從而縮短以後請求的響應時間。但與WEB窗體頁不同的是,不能獨立地請求用戶控制項,用戶控制項必須包括在WEB窗體頁內才能使用。

與伺服器端包含文件(SSI)相比,用戶控制項通過訪問由ASP.NET提供的對象模型支持,使程序員具有更大的靈活性。程序員可以對在控制項中聲明的任何屬性進行編程,而不只是包含其他文件提供的功能,這與其他任何ASP.NET伺服器控制項一樣。

盡管在創作用戶控制項時需要選擇一種語言,但程序員可以將多個用戶控制項包含在用多種語言創作的一個WEB窗體頁中。例如,可以用Visual Basic.NET創造一個用戶控制項,導入來自XML文件的數據,再用C#創建另一個用戶控制項,該控制項包含一個訂單窗體,然後在同一個WEB窗體頁中包括這兩個控制項。

此外,可以獨立於包含用戶控制項的WEB窗體頁中除該控制項以外的部分來緩存該控制項的輸出。這一技術稱作片段緩存,適當地使用該技術能夠提高站點的性能。例如,如果用戶控制項包含提出資料庫請求的ASP.NET伺服器控制項,但該頁的其餘部分只包含文本和在伺服器上運行的簡單代碼,則程序員可以對用戶控制項執行片段緩存,以改進應用程序的性能。

2、創建用戶控制項

可以通過使用文本或HTML編輯器以聲明方式創建用戶控制項。用戶控制項聲明語法與創建WEB窗體頁所採用的語法十分類似;兩者的主要差別在於用戶控制項在內容周圍不包括<html>、<body>和<form>元素。在包含用戶控制項的WEB窗體頁中包括這些元素。

用戶控制項可以像文本文件一樣簡單,或者它們可以包含其他ASP.NET伺服器控制項。以下過程簡要介紹了一個可包括在應用程序多個頁上的簡單登錄窗體。

在代碼聲明塊中公開屬性、事件處理程序以及要包括在用戶控制項功能中的其他任何代碼。在使用用戶控制項的屬性時有兩個選擇。首先,可以定義用戶控制項的新屬性並操作它們。其次,可以操作構成用戶控制項的伺服器控制項的屬性。例紓�謨沒Э丶�猩�鱐extbox WEB伺服器控制項,並向它提供一個ID為PASSWORD,則可以通過使用PASSWORD. Text語法來操作其Text屬性。

【注意】當用戶控制項包括在WEB窗體頁中時,此用戶控制項中包含的任何ASP.NET伺服器控制項的所有屬性和方法都將提升為此用戶控制項的公共屬性和方法。

步驟1:以下代碼示例聲明映射到步驟1中代碼的文本框的UserId和Password屬性。可以通過聲明或編程的方式,在任何包含此用戶控制項的WEB窗體頁中操作這些屬性。

Public MustInherit Class Loginform
Inherits System.Web.UI.UserControl
Protected WithEvents User As System.Web.UI.WebControls.TextBox
Protected WithEvents Pass As System.Web.UI.WebControls.TextBox
Protected WithEvents Button1 As System.Web.UI.WebControls.Button
#Region " Web 窗體設計器生成的代碼 "

'該調用是 Web 窗體設計器所必需的。
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()

End Sub

Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
'CODEGEN: 此方法調用是 Web 窗體設計器所必需的
'不要使用代碼編輯器修改它。
InitializeComponent()
End Sub

#End Region

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'在此處放置初始化頁的用戶代碼
End Sub
Public Property UserId() As [String]
Get
Return User.Text
End Get
Set(ByVal Value As [String])
User.Text = Value
End Set
End Property
Public Property Password() As [String]
Get
Return Pass.Text
End Get
Set(ByVal Value As [String])
Pass.Text = Value
End Set
End Property
End Class

步驟2:創建該用戶控制項顯示的UI元素。以下代碼創建與來自步驟1的代碼進行交互的登錄窗體。

【注意】將此用戶控制項包括在Web窗體頁中時,需要在@Register指令的Src屬性中包括此文件名稱以及該文件的路徑。

<%@ Control Language="vb" AutoEventWireup="false" Codebehind="Logonform.ascx.vb" Inherits="logintest.Logonform" TargetSchema="http://schemas.microsoft.com/intellisense/ie5" %>
<TABLE cellSpacing="15">
<TR>
<TD><B>用戶姓名: </B></TD>
<TD><ASP:TextBox id="User" runat="server"></ASP:TextBox></TD>
</TR>
<TR>
<TD><B>用戶口令: </B></TD>
<TD><ASP:TextBox id="Pass" runat="server" TextMode="Password"></ASP:TextBox></TD>
</TR>
<TR>
<TD></TD>
<TD><ASP:Button id="Button1" runat="server" Text="登錄" BorderStyle="Groove"></ASP:Button></TD>
</TR>
</TABLE>
3、調用用戶控制項

只有當包括在WEB窗體頁中時,用戶控制項才可以工作。當一個請求到達某一頁而該頁包含用戶控制項時,該用戶控制項將經歷任何伺服器控制項所要經歷的所有處理階段。

在 WEB 窗體頁中包括用戶控制項的方法很簡單。

在要包含用戶控制項的 WEB 窗體頁中,聲明一個@Register指令,該指令包括:

tagprefix屬性,該屬性將前綴與用戶控制項相關聯。此前綴將包括在用戶控制項元素的開始標記中。

tagname屬性,該屬性將名稱與用戶控制項相關聯。此名稱將包括在用戶控制項元素的開始標記中。

Src屬性,該屬性定義要包括在WEB窗體頁中的用戶控制項文件的虛擬路徑。

例如,以下代碼將注冊在文件LoginForm.ascx中定義的用戶控制項。該控制項還被指定有標記前綴Acme和標記名稱Login。

<%@ Register TagPrefix="Acme" TagName="LoginForm" Src=".\LoginForm.ascx" %>

使用自定義伺服器控制項語法在HtmlForm伺服器控制項的開始標記和結束標記之間 (<form runat=server></form>) 聲明該用戶控制項元素。例如,要聲明在上一步導入的控制項,使用以下語法。

<%@ Page Language="vb" AutoEventWireup="false" Codebehind="logintest.aspx.vb" Inherits="logintest.WebForm1"%>
<%@ Register TagPrefix="Acme" TagName="LoginForm" Src=".\LoginForm.ascx" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<title>WebForm1</title>
<meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.0">
<meta name="CODE_LANGUAGE" content="Visual Basic 7.0">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
</HEAD>
<body MS_POSITIONING="GridLayout">
<form id="Form1" method="post" runat="server">
<Acme:LoginForm id=" LoginForm " runat="server"/>
</form></BODY>
</HTML>

【注意】無論在WEB窗體頁上包括了多少個ASP.NET伺服器控制項(用戶控制項和其他任何控制項),都應只在WEB窗體頁上包括一個HtmlForm伺服器控制項。此控制項的開始和結束標記之間應包括所有伺服器控制項。
4、用戶控制項使用小結

(1)用戶控制項使開發人員能夠使用編寫WEB窗體頁的相同編程技巧輕松地定義自定義控制項。 作為約定,用.ascx文件擴展名指示這樣的控制項。這樣可以確保用戶控制項文件不能作為獨立的WEB窗體頁執行。

(2)用戶控制項通過Register指令包括在另一WEB窗體頁中,該指令指定TagPrefix、TagName和Src location。

(3)注冊了用戶控制項後,可以像普通的伺服器控制項那樣將用戶控制項標記放置在WEB窗體頁中(包括runat="server"屬性)。在包含WEB窗體頁中將用戶控制項的公共欄位、屬性和方法提升為該控制項的公共屬性(標記屬性)和方法。

(4)用戶控制項參與每個請求的整個執行生存期,並且可以處理自己的事件,封裝來自包含WEB窗體頁的一些頁邏輯。

(5)用戶控制項不應包含任何窗體控制項,而應依靠其包含WEB窗體頁在必要時包括窗體控制項。

(6)可以使用System.WEB.UI.Page類的LoadControl方法以編程方式創建用戶控制項。用戶控制項的類型由ASP.NET運行庫決定,遵循約定文件名_擴展名。

(7)只有當為用戶控制項包括了Register指令時,用戶控制項的強類型才能由包含WEB窗體頁使用(即使沒有實際聲明的用戶控制項標記)。

5、結束語

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

㈢ 關於asp.net程序中的web用戶控制項屬性的問題(急!!!)

做好的自定義控制項肯定是要注冊一下的撒!
然後才會顯示咯、、、、

㈣ Web.Config配置用戶控制項的問題

<controls>
<add tagPrefix="WUC" tagName="PageList" src="~/hl/account/pagelist.ascx" />
<add tagPrefix="WUC" tagName="GroupNav" src="~/hl/account/groupNav.ascx" />
<add tagPrefix="WUC" tagName="LogTop" src="~/hl/account/LogTop.ascx" />
<add tagPrefix="ControlVendor" assembly="ControlVendorAssembly"/>
</controls>
去掉

㈤ C#怎麼製作用戶控制項

首先,准備好開發環境,啟動Visual Studio.net Beta2,選擇菜單文件->新建->項目,項目類型選擇Visual C#項目,模板選擇Windows控制項庫,名稱輸入Percent,按確定,建立一個項目。
切換到Percent.cs[設計]頁面,在解決方案資源管理器中將UserControl1.cs改為Percent.cs。從工具箱中拖一個 Label控制到設計面板上,設置該Label的屬性:Name: lbPercent,BackColor: Transparent,Text: 100%,並拖拉Label的邊框,使其大小能剛好顯示出Text。右鍵在設計面板上單擊,從彈出菜單中選擇查看代碼,打開代碼編輯頁面。
可以看到名字空間為Percent,將游標移動到public class Percent : System.Windows.Forms.UserControl以下,輸入下面幾行:
private int iCurPercent = 0;
private Color clPercent = Color.Blue;
private Color clText = Color.Black;
以上定義並初始化了幾個私有變數,iCurPercent表示當前的百分比進度,clPercent為進度的顏色,clText為中間顯示的百分比文本的顏色。
本控制擁有三個屬性,分別設置進度條和文字的顯示顏色,以及當前進度。還定義了一個OnPercentChange事件,在百分比改變時觸發該事件。
在protected override void Dispose( bool disposing )後面添加以下內容:
public delegate void PercentChangeHandler(int CurrentPercent);
public event PercentChangeHandler OnPercentChange;public int CurrentPercent
{
get
{
return iCurPercent;
}
set
{
if ((value <= 100) && (value >= 0))
{
iCurPercent = value;
if (OnPercentChange != null)
OnPercentChange(iCurPercent);
this.Invalidate();
}
}
}public Color PercentBackColor
{
get
{
return clPercent;
}
set
{
clPercent = value;
this.Invalidate();
}
}public Color PercentTextColor
{
get
{
return clText;
}
set
{
clText = value;
this.Invalidate();
}
}
以上首先定義了事件,並在百分比改變時觸發。然後是三個屬性的實現。下面,需要在Paint事件里改變Percent控制的顯示狀態。切換到設計頁面,選擇整個設計面板,在屬性視圖中將游標移動到Paint,按回車,代碼頁面里就自動為Paint事件建立了框架,其中其一個參數為System.Windows.Forms.PaintEventArgs e,可以用這個參數干很多事情。先輸入以下畫百分比控制邊界的代碼:
Pen penBlack = new Pen(Color.Black, 1);
Point ptStart = new Point(0, 0);
Point ptEnd = new Point(this.Width - 1, 0);
e.Graphics.DrawLine(penBlack, ptStart, ptEnd);
ptStart = new Point(0, 0);
ptEnd = new Point(0, this.Height);
e.Graphics.DrawLine(penBlack, ptStart, ptEnd);Pen penWhite = new Pen(Color.White, 1);
ptStart = new Point(this.Width - 1, 0);
ptEnd = new Point(this.Width - 1, this.Height);
e.Graphics.DrawLine(penWhite, ptStart, ptEnd);
ptStart = new Point(0, this.Height - 1);
ptEnd = new Point(this.Width, this.Height - 1);
e.Graphics.DrawLine(penWhite, ptStart, ptEnd);SolidBrush brushFill = new SolidBrush(PercentBackColor);
Rectangle rcFill = new Rectangle(2, 2, iCurPercent * (this.Width - 3) / 100, this.Height - 3);
e.Graphics.FillRectangle(brushFill, rcFill);lbPercent.Left = this.Width / 2 - lbPercent.Width / 2;
lbPercent.Top = this.Height / 2 - lbPercent.Height / 2;
lbPercent.Text = iCurPercent.ToString() + "%";
lbPercent.ForeColor = PercentTextColor;在控制大小發生變化時也應該刷新,在設計頁面,游標移動到Resize,回車,在Resize事件中寫下:this.Invalidate();
這樣,這個百分比控制就編完了。下面,我們在編寫一個測試程序來測試這個控制。選擇菜單:文件->添加項目->新建項目,項目類型選擇 Visual C#項目,模板選擇Windows應用程序,取名為TestPercent,按確定,建立一個Windows應用程序框架。由於是添加了一個新項目,因此,解決方案資源管理器中就有了兩個項目:Percent和TestPercent。滑鼠在TestPercent上單擊右鍵,從彈出菜單中選擇「添加引用」,切換到「項目」頁面,項目名稱應為「Percent」,雙擊該項目名稱,把它加到選定的組件裡面,按確定。這樣,Percent組件就加到測試工程里了。用過VC的#import指令或者VB的引用的人對這個操作也許會感覺比較親切。
從工具箱中找到Percent控制,將其拖到測試工程的設計面板上擺好,再從工具箱里拖一個Button和一個Timer放好。雙擊Button,在其事件中寫下:timer1.Enabled = true; 再回到設計面板,雙擊Timer,在其事件中寫下:percent1.CurrentPercent = percent1.CurrentPercent + 1;將焦點移到用戶控制percent1上,找到事件OnPercentChange,回車,在程序框架中寫下:this.Text = CurrentPercent.ToString(); 這樣,測試程序就完成了。
下面運行程序,將TestPercent設為啟動項目,運行,按下button1,可以看到進度增加的同時,窗口標題也在發生變化。
通過這個簡單的用戶控制的編寫,我們可以體會到C#編程的簡便性,對其開發環境有個基本的了解。該控制也可以很容易地被其他開發工具,比如Visual Basic.net使用。
以上程序在C366, 128MB, Windows2000 Advanced Server SP2,Visual Studio.net Beta2中文版下編譯通過。

㈥ C#怎麼添加用戶控制項UserControl1

在你需要引入該用戶控制項的頁面頂部加入類似以下代碼
<!--Src是web用戶控制項所在路徑,TagName(組件名稱)隨便取,TagPrefix標簽前綴-->
<%@
Register
Src="/Components/FriendGroup.ascx"
TagName="friendgroup"
TagPrefix="uc1"
%>
當你需要用該控制項時,就像平時定義textbox或者button控制項一樣
<!--uc1即前面注冊組件的TagPrefix,
friendgroup即前面注冊組件裡面的TagName-->
<uc1:friendgroup
ID="friendgroup1"
runat="server"
/>
其實這更類似於java裡面的自定義標簽吧!呵呵