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>


Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow