hatelove 在 91之ASP.NET由淺入深 不負責講座 Day6 - Server Controls Introduction(2),
hatelove提到:
(c)ReadOnly:唯讀,需注意某一種特別弔詭的唯讀情況,請參考黑暗執行緒的文章TextBox.ReadOnly、Attributes["readonly"]及Disabled ,以及另一篇MSDN forum 阿尼的研究
令我連想到網頁表格的唯讀情形。
有些網頁上的表格,
會把一些值顯示出來,
卻不讓使用者的界面來改該值,
使用者端也只能改其他的值而送出。
如果 Server 端沒有檢查這個參數是否被改,
而照單全收的話,
那等於是對那個參數的值是門戶大開。
在手邊上常用的 Firefox 套件 Web Developer
只要點選「表單」→「啟用 被停用的表單欄位」,
就可以直接修改那唯讀的輸入格,
然後就送出被修改的參數:
如果Server端確認不會接受那被改的參數,
那乾脆在表單上,就不應該是input的屬性,
而只是一般的 text 來呈現就好。
同樣地,在 web developer 的下面幾項,
可移除掉一些原html上設定的限制。
往往寫client的form與寫server端處理該fomr的post,
算是兩件事,
可能不見得兩邊都兼顧其對應,
看起來 ASP.Net 好像做一次動作,
就產生出client端的form及Server端的對應處理,
不致造成form上的唯讀值被改,
而server端卻照單全收的情況。
減少人為撰寫上不一致的情形發生。