HTML 伺服器控件 (原生標籤加 `runat="server"`) 特性相同,但功能較簡單。
最常見的觸發回傳控件。轉譯為 ``。
| 屬性/事件 | 說明 |
|---|---|
| Text | 按鈕顯示文字 |
| CommandName / CommandArgument | 配合 `OnCommand` 事件,單一方法處理多按鈕 |
| OnClick | 伺服器端點擊事件 |
| OnClientClick | 客戶端腳本 (返回 false 可取消回傳) |
| UseSubmitBehavior | true (預設) 使用瀏覽器原生提交,false 改用 `__doPostBack` |
| ValidationGroup | 指定觸發驗證的群組 |
| PostBackUrl | 跨頁張貼目標頁面 |
轉譯為 ``、`
| 屬性 | 說明 |
|---|---|
| TextMode | `SingleLine` (預設) / `MultiLine` / `Password` |
| MaxLength | 最大字元數 (SingleLine/Password 有效) |
| Columns / Rows | 寬度/高度 (MultiLine 為 Rows) |
| ReadOnly | 唯讀 (仍回傳值) |
| AutoPostBack | 文字變更失焦時自動回傳 (配合 OnTextChanged) |
| Text | 取得/設定值 |
ASP.NET 控件支援 `OnClientClick`、`onchange`、`onfocus`、`onblur`、`onkeydown` 等原生 HTML 事件屬性,直接寫在標記中即可轉譯:
<asp:TextBox ID="txtSearch" runat="server"
onfocus="this.select();"
onkeydown="if(event.keyCode==13) { __doPostBack('btnSearch',''); return false; }" />
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Login.aspx.cs" Inherits="Login" %>
<!DOCTYPE html>
<html><head><title>登入</title></head>
<body>
<form id="form1" runat="server">
<div>
<asp:Label ID="lblUser" runat="server" Text="帳號:" AssociatedControlID="txtUser" />
<asp:TextBox ID="txtUser" runat="server" MaxLength="20" />
<asp:RequiredFieldValidator ControlToValidate="txtUser" ErrorMessage="*" />
<br />
<asp:Label ID="lblPwd" runat="server" Text="密碼:" AssociatedControlID="txtPwd" />
<asp:TextBox ID="txtPwd" runat="server" TextMode="Password" MaxLength="20" />
<asp:RequiredFieldValidator ControlToValidate="txtPwd" ErrorMessage="*" />
<br />
<asp:Button ID="btnLogin" runat="server" Text="登入" OnClick="btnLogin_Click"
OnClientClick="return confirm('確定送出?');" ValidationGroup="Login" />
<asp:ValidationSummary ValidationGroup="Login" HeaderText="錯誤:" />
</div>
</form>
</body></html>
Button 與 TextBox 是表單互動的基石。掌握 `OnClientClick` 整合客戶端確認、`ValidationGroup` 區隔驗證、`TextMode` 切換輸入模式、`AutoPostBack` 實現即時回應,能構建流暢且安全的使用者介面。理解轉譯後的 HTML 結構,有助於除錯與前端整合。