<٪ # حدة التقييم ( "الدولة")٪> أو <٪ # DataBinder.Eval (Container.DataItem، "الدولة")٪>

StackOverflow https://stackoverflow.com/questions/270230

  •  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()) %>

ولذا أعتقد أنها مختلفة قليلا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top