ASP.NET WebForms 中,運行時標記 runat="server" 的 <input> 控件屬於 HtmlInputText 類,獲取值方式與 TextBox 不同。本文給出兩種正確方法。
<input type="text" id="txt_UserName" runat="server" />
// 代碼後置
string userName = txt_UserName.Value; // HtmlInputText 使用 Value 屬性
// 或
string userName = this.txt_UserName.Value;
runat="server" 且 id 匹配HtmlInputText、HtmlTextArea、HtmlSelect 皆用 .Valuestring userName = Request.Form["txt_UserName"]; // 返回 string,若無則 null
// 安全寫法
string userName = Request.Form["txt_UserName"]?.ToString() ?? "";
runat="server",普通 HTML <input name="txt_UserName"> 也可取值| 方式 | 適用控件 | 需 runat="server" | 類型安全 |
|---|---|---|---|
.Value | HtmlInputText 等 | 是 | 強類型 |
Request.Form[key] | 所有 name 屬性表單元素 | 否 | 需判空/轉型 |
推薦優先使用 .Value,代碼可讀性強且享受 IDE 智能提示。