取得唯讀 TextBox 控制項的值

摘要:取得唯讀 TextBox 控制項的值

一般在頁面若不需用戶需入的欄位會將 TextBox 的 ReadOnly 屬性設為 True,可是這樣設定後,若用 JavaScript 在 Client 端去變更此 TextBox 的值時,此值會無法寫回對應的 TextBox 控制項。

TextBox 控制項本身在處理 PostBack 資料時,若 ReadOnly 屬性值為 True 時,它是不會回寫至 Text 屬性,所以你去讀 TextBox.Text 一定不會反應前端最新值,你可以透過 Page.Request.Form 去取得前端 TextBox 值。為何 TextBox 控制項為何會這樣設計呢?主要原因是為了增加網頁的安全性,防止被機器人程式改寫網頁的唯讀欄位。

 以下範例在頁面放置一個唯讀 TextBox 控制項,若前端 JavaScript 變更了該控制項的值,可以透過 Page.Request.Form 來取得新值。不過 Page.Request.Form("TextBox1") 中的 "TextBox1" 並不是控制項的 ID,而是 Client 端 HTML 碼中的 name,相當於控制項的 UniqueID 屬性值。


Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load        
  '若前端傳入的 Request.Form 有包含指定唯讀 TextBox 的值,則將其值填入唯讀 TextBox.Text 屬性。          
  If Page.Request.Form(TextBox1.UniqueID) IsNot Nothing Then            
    TextBox1.Text = Page.Request.Form(TextBox1.UniqueID)        
  End If    
End Sub

ASP.NET 魔法學院