Ich habe diese Beschreibung versehentlich im Blog eines Ausländers gesehen. Wenn das Textfeld-Steuerelement auf „schreibgeschützt“ und die Option „enableviewsate“ auf „false“ eingestellt ist, geht der Wert des Textfelds nach der Übermittlung verloren Wenn in asp.net 1.0/1.1 keine Situation auftritt, lautet der Code wie folgt:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" EnableViewState="false" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" " http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd ">
<script runat="server">
protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
this.Textbox1.Text = "readonly text";
}
}
protected void Button1_Click(object sender, EventArgs e)
{
this.lblMessage.Text = this .Textbox1.Text;
}
</script>
<html xmlns=" http://www.w3.org/1999/xhtml " >
<head runat="server">
<title>Unbenannte Seite</title>
</head>
<Körper>
<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">Some Text</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>
</body>
</html>
Bei der Ausführung unter .net 2.0 geht der Wert des Textfelds tatsächlich verloren. Schließlich habe ich die MSDN-Analyse und das BUG-Feedback-Center von Microsoft gefunden. Tatsächlich handelt es sich hierbei nicht um einen Fehler, sondern um eine kleine Änderung für die Sicherheit unter .net 2.0. Der spezifische Auszug lautet wie folgt, sodass jeder es verstehen wird.
Das Feedback von Microsoft lautet:
Nach sorgfältiger Analyse ergibt sich folgende Erklärung für das beobachtete Verhalten:
Bei einer Designänderung in ASP .NET aufgrund von Benutzersicherheitsbedenken wird die Eingabe für ein schreibgeschütztes Textfeld im Ansichtsstatus gespeichert. Dies geschieht nicht, wenn der Ansichtsstatus deaktiviert ist. Um dieses Problem zu umgehen, kann ein Seitenentwickler das schreibgeschützte Attribut zum TextBox hinzufügen .Attributes-Sammlung, die dann verwendet werden kann, um auf den „Wert“ des Textfelds zuzugreifen.
Wir hoffen, dass dies klargestellt wird.
Webserver und Tools
MSDN 2005-Analyse:
Der Textwert eines TextBox-Steuerelements, dessen ReadOnly-Eigenschaft auf „true“ gesetzt ist, wird an den Server gesendet, wenn ein Postback erfolgt, der Server führt jedoch keine Verarbeitung für ein schreibgeschütztes Textfeld durch. Dadurch wird verhindert, dass ein böswilliger Benutzer einen Textwert ändert Der Wert der Text-Eigenschaft bleibt zwischen Postbacks im Ansichtszustand erhalten, sofern er nicht durch serverseitigen Code geändert wird.
Quelle: Jackyrong-Blog