DCSIMG
Resource in javascript using HttpHandler - שלמה גולדברג (הרב דוטנט)

שלמה גולדברג (הרב דוטנט)

מרצה בסלע ויועץ בעולם ה - net.

Resource in javascript using HttpHandler

 

אז כתבנו Resource file, והכנסנו לתוכו את כל ההודעות שלנו,
 
ואפילו הגדרנו אותו כ public, כדי שנוכל לגשת אליו מכל הפרויקטים,
 
אבל מה אנחנו עושים, עם ההודעות שאנחנו רוצים להציג ב JavaScript,
 
 
אז הנה הפיתרון:
 
בפרויקט שאפשר להוריד מכאן:
 
יש פרויקט שנקרא Common, שבו יש את ה resource file,
 
הוספנו בפרויקט ה web, קובץ מסוג HttpHandler,
 
שקורא את כל המאפיינים של ה Resource, ומחזיר מערך JS, עם כל הערכים.
 
הנה הקוד:
 
 

    1 public void ProcessRequest(HttpContext context)

    2 {

    3     context.Response.ContentType = "application/js";

    4 

    5     // Get the type of the resource class

    6     Type messagesType = typeof(Messages);

    7 

    8     // Get the all properties taht is public and static

    9     PropertyInfo[] properties = messagesType.GetProperties(

   10             BindingFlags.Public | BindingFlags.Static);

   11 

   12     // Get a collection of Pair,

   13     // the first is the property name, and the secound is the property value

   14     var stringProperties =

   15         from property in properties

   16        where property.PropertyType == typeof(string)

   17        select new Pair(property.Name, property.GetValue(null, null));

   18 

   19 

   20     // Build the javascript array

   21     StringBuilder bulder = new StringBuilder();

   22     bulder.Append("var messageArray = new Array(); ");

   23 

   24     foreach (var item in stringProperties)

   25     {

   26         bulder.Append(string.Format("messageArray['{0}'] = '{1}'; ",

   27                                     item.First, item.Second));

   28     }

   29 

   30     context.Response.Write(bulder.ToString());

   31 }

 
 
אז מה כתוב בקוד:
 
שורה 3: הגדירה שמה שחוזר הוא מסוג JavaScript
 
שורה 6: קבלת ה Type של Messages (קובץ ה Resource)
 
שורה 9: קבלת כל המאפיינים שמוגדרים כ: public static
 
שורה 14 - 17: קבלת Collection של Pair, שמכיל את השם של המאפיין, ואת ערכו. (null, null בשורה 17, זה בגלל שהמאפיין הוא סטטי, ולא indexer)
 
שורה 21: הגדרת ה StringBuilder, שיכיל את המערך ה JS.
 
שורה 22: הגדרת המערך ב JS.
 
שורה 24 - 28: ריצה על כל המאפיינים שקבלנו, ולהוסיף אותם למערך.
 
שורה 30: כתיבה של המערך ל Response.
 
 
השימוש בצד ה Web, יהיה פשוט:
 
 

    1 <script src="MessageHandler.ashx" type="text/javascript"></script>

    2 <script type="text/javascript">

    3     function Show() {

    4         alert(messageArray['Name']);

    5         alert(messageArray['Address']);

    6     }

    7 </script>

 
 
ייבוא של ה JS, מתוך ה httpHandler.
 
ואז פשוט להשתמש במערך.
 
 
תהנו

תוכן התגובה

שלמה גולדברג כתב/ה:

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

# May 9, 2009 11:02 PM

שלמה גולדברג (הרב דוטנט) כתב/ה:

פוסט זה נכתב בעזרתם של תותחי העל נטלי אהפוטה ו ניב לוי (יהלום של סלע ) כרגיל בהרבה מקומות בהם אנחנו מפתחים

# May 8, 2012 5:49 PM
שלח תגובה

(שדה חובה)  

(שדה חובה)  

(אופציונלי)

(שדה חובה) 

Please add 2 and 8 and type the answer here:


Enter the numbers above: