אם אני רוצה לשלב בתוך הדף שלי פלט של דפים אחרים במערכת(לא header או footer שאותם ניתן לשלב ב masterpage...), משהו שיהיה תלוי באיזה משתנה למשל, אז בעבר הלא רחוק היה נהוג להשתמש ב include, למשל, אם נכנסתי לדף בתור משתמש רגיל אזי הייתי רוצה לכלול את הקובץ:
<-- #include File = "c:\Inetpub\wwwroot\MyApplication\userWelcome.asp" -->
ואם בתור מנהל אז קובץ אחר...
<-- #include File = "c:\Inetpub\wwwroot\MyApplication\ManagerWelcome.asp" -->
הבעיה עם הקוד הזה היא שהשרת היה מריץ את הקובץ שאני רוצה להכליל, עוד לפני שהוא בודק את התנאי שלי, מה שאומר שהוא בעצם הריץ גם את הקובץ למנהל וגם את הקובץ למשתמש רגיל בעת הכניסה לדף, ורק אז היה בודק את התנאי והיה מציג את התוכן שרציתי.
ואם היו לי 8 כאלה בדף...?
בשביל זה יש את Server.Execute... פשוט מאוד, פשוט להעביר לו את הכתובת של הדף (המקומי בלבד!) שאנו רוצים להריץ, והפלט שלו יתווסף לדף שאני מריץ עכשיו. נניח שאני רוצה לכלול בגוף הדף הודעה בהתאם לשפת המשתמש (למרות שיש שיטות טובות יותר כמובן...), אזי הקוד שלנו יהיה :
<html>
<body>
<H1>Company Name</H1>
<% string lang = Request.ServerVariables["HTTP_ACCEPT_LANGUAGE"];
lang = lang.SubString(0,2);
Server.Execute(lang+"Welcome.asp") ; %>
</body> </html>
להורדת הפרוייקט
msdn at microsoft
Technorati Tags:
ServerExecute
Be the first to rate this post
- Currently 0/5 Stars.
- 1
- 2
- 3
- 4
- 5
הפעם אני לא אכתוב קוד, אני רק אראה קוד שמישהו אחר כתב, אבל בלתי אפשרי להסתדר בלי התוכנה הקטנה הזאת...
מדובר על התוכנה Test Driven שבשיא הפשטות ניתן להגיד שהיא בסך הכל מריצה עבורכם את הקוד ישירות מסביבת הפיתוח. מה? כן, כמו שזה נשמע, לחצן ימני על הפונקציה שעכשיו כתבתם, לחיצה על Run Test והפרוייקט מתקמפל, הפונקציה מופעלת והכל נסגר.
ועדיין אולי לא ראיתם את היתרון, אבל עכשיו תראו... כמה פעמים כתבנו class libraies? Dllים שאמורים לשמש תוכניות אחרות, ואז כדי לבדוק אותם בזריזות כתבנו איזה WinForm שיריץ אותם? אז זה כל העניין, כעת ברוב הפעמים אני לא אצטרך את זה! כי התוכנה מריצה גם Dllים שהם ספריות.
טוב בואו נתחיל, קודם נוריד את התוכנה מהאתר שלהם
נסגור את ויז'ואל סטודיו, נריץ את ההתקנה ונפתח את ויז'ואל סטודיו שוב. לחצן ימני יראה לנו את האפשרויות:
כפי שניתן לראות, וגם זה צוין בעת ההתקנה, התוכנה תומכת גם בפריימורקס אחרים לביצוע בדיקות ומבחני קוד כגון NUnit שעליה כבר דיברנו
ועכשיו סתם דוגמה קטנה שיהיה נחמד, נניח שבמחלקה שלי יש פונקציה עם איזה אלגוריתם מסובך, במקום כל פעם לבנות מחדש את כל הפרויקט , להריץ ולבדוק בדיבוג את האלגוריתם אני יכול פשוט להריץ אותו ישירות. ומה אם הפונקציה מקבלת פרמטרים? אז נוסיף לקוד פונקציה נוספת שנקרא לה בשם Tester לדוגמה, למהדרין ביננו ניתן להקיף אותה בהוראות לקומפיילר שרק בדיבוג יכלול את הפונקציה הזאת (#if DEBUG.... #endif)
בפונקציה הזאת אני אריץ את הפונקציה המסובכת ואשלח לה פרמטרים. את התוצאה ניתן או להדפיס דרך Debug.Write("aa") ואז נראה את התוצאות בחלון הלבן הקטנצ'יק שמראה לנו את כל השגיאות בקימפול תמיד, או להגדיר שפונקציית הטקסט שלנו מחזירה ערך, ואז Test Driven ידפיס את הערך הזה בעצמו בחלון הקטנצ'יק הזה...
שימו לב שאם הפונקציה שאנו רוצים להריץ היא לא סטטית, אז אנחנו צריכים לספק גם בנאי ללא פרמטרים למחלקה שבה רצה הפונקציה, כדי ש TestDriven תוכל ליצור אובייקט מהמחלקה הזאת, או לחילופין פונקציה הבדיקה עצמה יכולה להיות סטטית והיא תיצור מופע חדש מהמחלקה שאותה אנו רוצה לבדוק ותקרא לפונקצית המטרה.
public class MyClass
{
#if DEBUG
public static void Tester1()//this is for the static method test
{
int result=MyClass.DoMath(3,5);
System.Diagnostics.Debug.WriteLine(result);
}
#endif
public static int DoMath(int a, int b)
{
return a * b;//this is my complicated algorithm
}
}
Be the first to rate this post
- Currently 0/5 Stars.
- 1
- 2
- 3
- 4
- 5