لقد رأيت هذا الوصف عن طريق الخطأ في مدونة أجنبي عندما يتم تعيين عنصر تحكم مربع النص على القراءة فقط، ويتم تعيين تمكين عرض الصفحة على خطأ، سيتم فقدان قيمة مربع النص بعد الإرسال، وهذا يحدث فقط في asp.net 2.0 لن يحدث هذا الموقف في asp.net 1.0/1.1، فالرمز كما يلي:
<%@ لغة الصفحة = "C#" AutoEventWireup = "true" CodeFile = "Default.aspx.cs" EnableViewState = "false" يرث = "_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 = "نص للقراءة فقط"
}
}
protected void Button1_Click(object sender, EventArgs e)
{
this.lblMessage.Text = هذا .Textbox1.Text;
}
</script>
<html xmlns=" http://www.w3.org/1999/xhtml " >
<رئيس التشغيل = "الخادم">
<title>صفحة بلا عنوان</title>
</الرأس>
<الجسم>
<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"> بعض النص </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>
</الجسم>
</html>
عند التشغيل ضمن .net 2.0، سيتم فقدان قيمة مربع النص بالفعل. أخيرًا، وجدت تحليل MSDN ومركز تعليقات الأخطاء الخاص بشركة Microsoft. في الواقع، هذا ليس خطأً، ولكنه تغيير بسيط للأمان ضمن .net 2.0. المقتطف المحدد هو كما يلي، لذلك سيفهم الجميع:
تعليقات مايكروسوفت هي:
وبعد التحليل الدقيق، فإن تفسير السلوك الملاحظ هو ما يلي:
من خلال تغيير التصميم في ASP .NET بناءً على مخاوف تتعلق بأمان المستخدم، يتم حفظ الإدخال الخاص بمربع نص للقراءة فقط في حالة العرض، وهو ما لا يحدث إذا تم تعطيل حالة العرض لحل هذه المشكلة، يمكن لمطور الصفحة إضافة سمة للقراءة فقط إلى TextBox مجموعة السمات، والتي يمكن استخدامها بعد ذلك للوصول إلى "قيمة" مربع النص.
نأمل أن يكون هذا واضحًا. شكرًا لك.
خادم الويب والأدوات
تحليل MSDN 2005:
يتم إرسال القيمة النصية لعنصر تحكم TextBox مع خاصية القراءة فقط المعينة إلى true إلى الخادم عند حدوث إعادة النشر، لكن الخادم لا يقوم بمعالجة مربع نص للقراءة فقط، وهذا يمنع المستخدم الضار من تغيير قيمة النص للقراءة فقط. يتم الاحتفاظ بقيمة خاصية النص في حالة العرض بين عمليات إعادة النشر ما لم يتم تعديلها بواسطة التعليمات البرمجية من جانب الخادم.
المصدر: مدونة جاكيرونج