Saya tidak sengaja melihat deskripsi ini di blog orang asing. Ketika kontrol kotak teks disetel ke hanya baca, dan pengaktifan halaman disetel ke salah, nilai kotak teks akan hilang setelah pengiriman situasi tidak akan terjadi di asp.net 1.0/1.1, kodenya sebagai berikut:
<%@ Halaman Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" EnableViewState="false" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transisi//EN" " http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd ">
<skrip runat="server">
dilindungi void Page_Load(pengirim objek, EventArgs e)
{
if (!this.IsPostBack)
{
this.Textbox1.Text = "teks hanya baca }
}
dilindungi
void Button1_Click(pengirim objek, EventArgs e)
{
this.lblMessage.Text = ini; .Textbox1.Text;
}
</skrip>
<html xmlns=" http://www.w3.org/1999/xhtml " >
<head runat="server">
<title>Halaman Tanpa Judul</title>
</kepala>
<tubuh>
<form runat="server" id="Form1">
<asp:textbox ID="Textbox1" runat="server" ReadOnly="true" ForeColor="silver"></asp:textbox>
<asp:textbox ID= "Textbox2" runat="server" ReadOnly="true">Beberapa Teks</asp:textbox>
<asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" /><br />
<asp:Label ID="lblMessage" runat="server" Text="Label"></asp:Label>
</form>
</tubuh>
</html>
Saat dijalankan di bawah .net 2.0, nilai kotak teks memang akan hilang. Akhirnya, saya menemukan analisis MSDN dan pusat umpan balik BUG Microsoft. Sebenarnya, ini bukan BUG, tetapi perubahan kecil untuk keamanan di bawah .net 2.0. Kutipan spesifiknya adalah sebagai berikut, sehingga semua orang akan mengerti:
Tanggapan Microsoft adalah:
Setelah dianalisis secara cermat, penjelasan atas perilaku yang diamati adalah:
Dengan perubahan desain di ASP .NET berdasarkan masalah keamanan pengguna, input untuk kotak teks readonly disimpan dalam kondisi tampilan, yang tidak terjadi jika kondisi tampilan dinonaktifkan. Untuk mengatasinya, pengembang halaman dapat menambahkan atribut readonly ke TextBox Koleksi .Attributes, yang kemudian dapat digunakan untuk mengakses 'nilai' kotak teks.
Kami harap ini menjelaskan.
Server & Alat Web
Analisis MSDN 2005:
Nilai Teks dari kontrol TextBox dengan properti ReadOnly yang disetel ke true dikirim ke server ketika postback terjadi, namun server tidak melakukan pemrosesan untuk kotak teks read-only. Hal ini mencegah pengguna jahat mengubah nilai Teks itu hanya-baca. Nilai properti Teks dipertahankan dalam status tampilan di antara postback kecuali diubah oleh kode sisi server.
Sumber: blog jackyrong