<٪ # حدة التقييم ( "الدولة")٪> أو <٪ # DataBinder.Eval (Container.DataItem، "الدولة")٪>
-
06-07-2019 - |
سؤال
ما هو الفرق بين وجود
<%# Eval("State") %>
وفي الصفحة aspx
الخاص بك، مقابل وجود
<%# DataBinder.Eval(Container.DataItem, "State") %>
وفي الصفحة aspx
بك؟
المحلول
وحدة التقييم ( "الدولة") هو شكل مبسط للDataBinder.Eval (Container.DataItem، "الدولة") بناء الجملة. أنها لا تعمل إلا داخل الضوابط قالب ربط البيانات.
لمزيد من المعلومات، انظر على MSDN وثائق .
نصائح أخرى
وليس هناك فرق. في "وحدة التقييم" الأسلوب هو مجرد اختصار لDataBinder.Eval (Container.DataItem، "بلاه") الأسلوب.
وهناك الكثير من الاختلافات بين <%# Eval %>
و<%# DataBinder.Eval %>
تحت الأغطية، حتى ولو <لأ href = "https://msdn.microsoft.com/en-us/library/ms178366.aspx#Anchor_1" يختلط = "نوفولو "> وثائق تنص على أن استخدام Eval
(TemplateControl.Eval
على وجه الدقة) يدعو فعلا DataBinder.Eval
وأن مهمتهم هي القيام بنفس العمل.
وهذا هو الصحيح، ولكن فقط باستخدام Eval
يعني أن ASP.NET نفسها يحل الكائن الذي هو ربط بيانات. وهي تفعل ذلك داخليا مع كومة حيث يتم إضافة العناصر عندما يتم استدعاء Control.DataBind()
. الحيلة هي أن هذا لا يحدث إلا إذا كانت الممتلكات Page
من عنصر التحكم غير null
-عند هذه النقطة.
إذا مكدس المدارة Page
ليست حتى الآن عندما تحصل على النقطة التي DataItem
الاحتياجات التي يجب حلها، وطريقة Page.GetDataItem()
إعطاء استثناء مع رسالة مثل
وأساليب ربط البيانات مثل Eval()
، XPath()
، وBind()
استخدامها في سياق عنصر تحكم ربط بيانات.
وDataBinder.Eval
لا يزال يعمل في هذه الظروف لأنك تزويدها الكائن الهدف يدويا، لذلك ASP.NET لا حاجة للقيام بأي حل من تلقاء نفسها.
وطريقة حدة التقييم هو مجرد اختصار الرسالة
ولقد رأيت البرمجية التالية
<%# (DataBinder.Eval(Container.DataItem, "ApplicationId").ToString() == "-1" ? "N/A" : Eval("ApplicationId").ToString()) %>
ولذا أعتقد أنها مختلفة قليلا.