DCSIMG
RegisterArrayDeclaration unexpected behavior - Avi Pinto

Avi Pinto

על הבלוג

Follow uberPinto on Twitter

View Avi Pinto's profile on LinkedIn

Subscribe in a reader Subscribe by Email

 


Two new sculptures

View my Air Brush Work at Avipinto.com

Helping a friend, great tool for fixing file names

JavaScript Tutorial


Disclaimer All postings/content on this blog are licensed under a Creative Commons Attribution By license and provided "AS IS" with no warranties, and confer no rights.
All entries in this blog are my opinion and don't necessarily reflect the opinion of my employer or sponsors.

RegisterArrayDeclaration unexpected behavior

למי שלא מכיר עדיין ClientScript.RegisterArrayDeclaration מיועדת להוספת מערך javascript אל הדף + ערך.
זו פונקציה נחמדה שבודקת אם המערך כבר קיים על הדף, ואם כן, רק מוסיפה את הערך.
אני משתמש בה בעיקר ב custom controls.

תוך כדי פיתוח של control, עלתה הדרישה לעיתים לאתחל את המערך ללא איברים, כדי שיאותחל לאחר מכן ע"י javascript (על הסיבה לכך בהזדמנות אחרת),
זו לא היתה בעיה כל אחת מהשורות הבאות תייצר את המערך SomeJSarr ריק על הדף:

this.Page.ClientScript.RegisterArrayDeclaration("SomeJSarr", null);
this.Page.ClientScript.RegisterArrayDeclaration("SomeJSarr", "");

הבעיה/התנהגות מרגיזה מתרחשת כשרוצים לטעום משני העולמות:
control אחד שרק יאתחל את המערך, ו control אחר שיבצע רישום לערך,
נשמע טריויאלי לא? משהו שמקביל  לכתיבת שתי השורות הבאות הבא:

this.Page.ClientScript.RegisterArrayDeclaration("SomeJSarr", "");
this.Page.ClientScript.RegisterArrayDeclaration("SomeJSarr", "'firstValue'");

השורה הראשונה מוסיפה את המערך הריק,
והשורה השניה לא מבצעת רישום של מערך חדש,
אבל גם לא מוסיפה את הערך החדש כמו שצריך, וגורמת לשגיאת סקריפט מכוערת:

var AS_controlsArr = new Array(, 'firstValue');

פשוט שכחו לבדוק את המקרה שבו המערך מאותחל אבל ללא איברים, ולכן תמיד הוספת איבר גוררת ',' לפניו.

מה הפתרון?
התיעוד לא ממש עוזר בעניין,
פשוט נמנעתי מאתחול ריק של המערך בצורה הזו, ואם צריך, אז האתחול מתבצע ע"י javascript במידה והמערך לא קיים עדיין ( נקודה למחשבה בעניין - פחות יעיל לחפש משתנה שלא קיים כשהדף עולה ב context הגלובלי, כיוון שאז עוברים על כל ה context).

אשמח לשמוע הערות/הארות, ושיהיה יום נפלא

שלח תגובה

(שדה חובה)  

(שדה חובה)  

(אופציונלי)

(שדה חובה) 

Please add 2 and 3 and type the answer here:


Enter the numbers above: