ASP.NET - Serverkontroller

Serverkontroller är taggar som servern kan förstå.

Begränsningarna hos Classic ASP

Nedan listas koden som kopierades från föregående avsnitt:

<html>
<body style="background-color:#e5eecc; text-align:center;">
<h2>Hello CodeW3C.com!</h2>
<p><%Response.Write(now())%></p>
</body>
</html>

Ovanstående kod avslöjar begränsningarna hos Classic ASP: Koddelen måste placeras på platser där utdata ska ske.

Genom Classic ASP kunde vi inte separera körbar kod från HTML själv. Detta gjorde sidan svår att läsa och underhålla.

ASP.NET - Serverkontroller

Genom serverkontroller har ASP.NET löst problemet med "spaghetti-kod" som beskrivs ovan.

Serverkontroller är taggar som kan förstås av servern.

Det finns tre typer av serverkontroller:

  • HTML-serverkontroller - Traditionella HTML-taggar
  • Web-serverkontroller - Nya ASP.NET-taggar
  • Validation-serverkontroller - Används för inmatningsvalidering

ASP.NET - HTML-serverkontroller

HTML-serverkontroller är HTML-taggar som är förståeliga för servern.

HTML-element i ASP.NET behandlas som text. För att göra dessa element programmerbara måste de läggas till runat="server"-egenskapenDenna egenskap indikerar att detta element är en serverkontroll. Det måste också läggas till id-egenskapen för att identifiera denna serverkontroll. Detta id kan användas för att manipulera serverkontrollen vid körningstid.

Kommentar:Alla HTML-serverkontroller måste vara inom en <form>-tagg med runat="server"-egenskapen. runat="server"-egenskapen indikerar att formuläret bör bearbetas på servern. Den indikerar också att innehållna kontroller kan nås av serverkoden.

I följande exempel har vi deklarerat en HtmlAnchor-serverkontroll i .aspx-filen. Sedan har vi manipulerat HtmlAnchor-kontrollens HRef-egenskap i en händels hanterare. Page_Load-händelsen är en av de många ASP.NET-händelser som servern förstår:

Kommentar:En händels hanterare (event handler) är en underprogram som utför kod för ett givet händelse.

<script runat="server">
Sub Page_Load
link1.HRef="http://www.codew3c.com"
End Sub
</script>
<html>
<body>
<form runat="server">
<a id="link1" runat="server">Besök CodeW3C.com!</a>
</form>
</body>
</html>

Tips:Kod som kan köras har redan flyttats utanför HTML.

ASP.NET - Webbserverkontroll

Webbserverkontroller är specialmärken i ASP.NET som servern förstår.

Liknande HTML-serverkontroller skapas också på servern, de behöver också runat="server"-egenskapen för att fungera. Men webbserverkontroller behöver inte mappa några befintliga HTML-element, de representerar mer komplexa element.

Syntaksen för att skapa en webbserverkontroll är:

<asp:control_name id="some_id" runat="server" />

I följande exempel har vi deklarerat en Button-serverkontroll i .aspx-filen. Sedan har vi skapat en händels hanterare för Click-eventet som kan ändra texten på knappen:

<script runat="server">
Sub submit(Source As Object, e As EventArgs)
button1.Text="Du klickade mig!"
End Sub
</script>
<html>
<body>
<form runat="server">
<asp:Button id="button1" Text="Klicka mig!" runat="server" OnClick="submit"/>
</form>
</body>
</html>

ASP.NET - Validation server control

Validation server control används för att validera användarinput. Om användarens input inte går igenom valideringen, kommer ett felmeddelande att visas för användaren.

每种 validation 控件执行一种特定的验证类型(比如验证某个具体的值或者某个范围的值)。

默认地,当点击Button, ImageButton或LinkButton 时,就会执行页面验证。您可通过把 CausesValidation 属性设置为 false,来阻止某个按钮控件被点击时进行验证。

创建 Validation 服务器控件的语法是:

<asp:control_name id="some_id" runat="server" />

在下面的例子中,我们在 .aspx 文件中声明了一个 TextBox 控件,一个 Button 控件,以及一个 RangeValidator 控件。如果验证失败,文本 "The value must be from 1 to 100!" 将显示在 RangeValidator 控件中:

<html>
<body>
<form runat="server">
<p>Enter a number from 1 to 100:
<asp:TextBox id="tbox1" runat="server" />
<br /><br />
<asp:Button Text="Submit" runat="server" />
</p>
<p>
<asp:RangeValidator
ControlToValidate="tbox1"
MinimumValue="1"
MaximumValue="100"
Type="Integer"
Text="The value must be from 1 to 100!"
runat="server" />
</p>
</form>
</body>
</html>

显示这个例子