ASP.NET
ASP.NET - Användarkontroller
Sök…
Introduktion
Användarkontroller är behållare som kan fyllas med HTML-markering och serverkontroller med kod bakom på samma sätt som ASPX-sidan. De behandlas som återanvändbara mindre enheter på en sida, så att de inte kan köras som fristående sidor och får inte ha HTML , body eller form HTML-element i dem.
Introduktion av användarkontroller
Användarkontroller görs för återanvändbarhet på ASP.NET-sidor, liknande huvudsidor. Istället för att dela bassideslayout delar användarkontroller delningsgrupp med HTML / ASP.NET inbyggda serverkontroller eller en specifik formlayout, t.ex. kommentarinlämning eller gästanteckningar.
En användarkontroll kan innehålla både HTML-kontroller och ASP.NET-serverkontroller, inklusive skript på klientsidan.
Användarkontrollerna inkluderar vanligtvis Control
ovanför sin definition:
<%@ Control Language="C#" AutoEventWireup="True" CodeFile="UserControl.ascx.cs" %>
Liksom ASPX-sidan består användarkontroller av markeringar som kan associeras med en kod bakom filen för att utföra vissa händelser och uppgifter, därför kan alla HTML-taggar som finns på ASPX-sidan användas på användarkontroller förutom <html>
, <body>
och <form>
taggar.
Här är ett exempel för enkel användarkontrollmarkering:
<%-- UserControl.ascx --%>
<%@ Control Language="C#" AutoEventWireup="True" CodeFile="UserControl.ascx.cs" %>
<div>
<asp:Label ID="Label1" runat="server" />
<br />
<asp:Button ID="Button1" runat="server" Text="Click Here" OnClick="Button1_Click" />
</div>
Exempel på kod bakom:
// UserControl.ascx.cs
public partial class UserControl : System.Web.UI.UserControl
{
protected void Button1_Click(Object sender, EventArgs e)
{
Label1.Text = "Hello World!";
}
}
Innan en användarkontroll sätts in på ASPX-sidan, bör Register
deklareras ovanpå sidan med referens till användarkontrollen med dess källadress, tagnamn och taggprefix.
<%@ Register Src="UserControl.ascx" TagName="UserControl" TagPrefix="uc" %>
Efteråt kan du placera användarkontroll på ASPX-sidan som ASP.NET inbyggd serverkontroll:
<uc:UserControl ID="UserControl1" runat="server" />
Skapa användarkontrollinstans programmatiskt
Om du vill instansera en instans av användarkontroll i ASPX-koden bakom sidan, måste du skriva användarkontrolldeklaration på Page_Load
händelse enligt följande:
public partial class Default : System.Web.UI.Page
{
protected void Page_Load(Object sender, EventArgs e)
{
Control control1 = LoadControl("UserControl.ascx");
Page.Controls.Add(control1);
}
}
Observera att ASCX-fil för användarkontroll bör redan skapas när LoadControl-metoden körs.
Ett annat sätt känt för att förklara användarkontroller programmatiskt är att använda PlaceHolder
:
public partial class Default : System.Web.UI.Page
{
public PlaceHolder Placeholder1;
protected void Page_Load(Object sender, EventArgs e)
{
Control control1 = LoadControl("UserControl.ascx");
Placeholder1.Controls.Add(control1);
}
}
Beroende på ditt behov placerar PlaceHolder
användarkontroller i en behållare som lagrar alla serverkontroller som dynamiskt läggs till på sidan, där Page.Controls
direkt sätter in användarkontroll på sidan, vilket är mer föredraget för att göra HTML-bokstavliga kontroller.
Lägga till egna egenskaper för användarkontroll
Liksom standard ASP.NET-inbyggda serverkontroller, kan användarkontroller ha egenskaper (attribut) på sin definitionstagg. Anta att du vill lägga till färgeffekt på UserControl.ascx
fil så här:
<uc:UserControl ID="UserControl1" runat="server" Color="blue" />
Vid denna punkt kan anpassade attribut / egenskaper för användarkontroller ställas in genom att deklarera egenskaper i användarkontrollens kod bakom:
private String _color;
public String Color
{
get
{
return _color;
}
set
{
_color = value;
}
}
Om du vill ange standardvärde för en användarstyrningsegenskap tilldelar du standardvärdet i användarkontrollens konstruktionsmetod.
public UserControl()
{
_color = "red";
}
Sedan bör användarkontrollmarkering ändras för att lägga till färgattribut enligt följande exempel:
<%@ Control Language="C#" AutoEventWireup="True" CodeFile="UserControl.ascx.cs" %>
<div>
<span style="color:<%= Color %>"><asp:Label ID="Label1" runat="server" /></span>
<br />
<asp:Button ID="Button1" runat="server" Text="Click Here" OnClick="Button1_Click" />
</div>