SPA, MVC4, KNOCKOUT

momoshlomo

New member
שנית

כל כוחו של KO שהוא משקף שינוי בין מודל(אוביקט javascript) לויו
(html)
ולכן לשמור בתגובה לשינוי נראה לי בזבוז.
עדיף(ויתקנו אותי אם אני טועה) לשמור בסוף - בתגובה לאיזה כפתור שמירה כללי
 

momoshlomo

New member
שלישית

אם הבנתי נכון את השאלה שלך -איך להעביר נתונים מJS לCNOTROLER
אז אם קונטרולר נראה כך:

[HttpPost]
public JsonResult UpdatePerson(Person p)

אז כדי להעביר אובייקט JS
צריך להתמש בAJAX הבא:

$.ajax({
...
data:{p:{name:'Shlomo'}}
...
})
 

tamarhp

New member
אולי הבעיה היא בשליחת הערכים אצלי?

יצרתי Constructor בסיס -
Person(){}
וכשזה קיים - אז השליחה מגיעה אליו, יוצרת פרסון ריק, ואז מגיע פרסון מאותחל למתודה שלי (אבל בלי הערכים ששלחתי כמובן).
כשזה לא קיים - מגיע NULL.
 

momoshlomo

New member
אני חייב להבין כאן משהו: כשמה קיים?

אם אפשר תפרטי - מה בדיוק את רוצה שיקרה בתגובה למה
 

tamarhp

New member
כשהCONSTRUCTOR קיים....

יש לי הרי מתודה בקונטרולר שמקבלת מודל מסוג Person.

כשאני כותבת בקוד Constructor ריק
Person(){}
ושמה בו BreakPoint
השליחה מגיעה אליו, יוצרת איזשהו פרסון עם ערכי התחלה, ואז המתודה מקבלת את הפרסון הזה.

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


עוד נקודה: השתמשתי באובייקט פשוט עם פחות ערכים שהיה באפליקציה המקורית ושם זה עבד. עם האובייקט שלי זה לא עובד. אני תוהה אולי אחד מהערכים שלי מכיל ערך שגוי שתוקע אותו (נגיד STRING במקום INT או משהו כזה) אבל אני לא מוצאת..
 

arielRuuubi

New member
אז הבנאי שלך לא טוב

איפשהו אחד הערכים לא מתאים, זה חייב להיות אחד לאחד

גם תקפידי על כללי כתיבת JSON, הדוט נט רגיש בענין הזה כגון

{"name":"Tu\u011Frul","surname":"Topuz","message":"Hello World"}
 

tamarhp

New member
הצלחתיייייייייייי

האמת שבזכות הר"צ של הר"צ שלי...
מתברר ש-
א. הוא חייב בנאי ריק כדי ליצור אובייקט מאותחל
ב. הערכים צריכים להיות עם שמות זהים למה שיש ב*מודל*. (ושיהיה להם GET, SET כמובן)
אני חשבתי שהוא ישתמש בבנאי שמקבל ערכים, ולכן שלחתי לו ערכים עם שמות זהים למה שיש ב*בנאי*. לכן זה לא עבד.
 

MoAtlow

New member
יפה.

להבא באמת כדאי שתעלי כאן את המודל במלואו, כמו שביקשתי,
אנשים פה סה"כ אוהבים לעזור
 

tamarhp

New member
זה דברים של העבודה..

אני לא ממש יכולה להעלות כאן קוד מלא.. :-\
 

MoAtlow

New member
החלטה שלך.

אבל אנשים פה מוגבלים ביכולת שלהם לעזור בלי זה.
בהצלחה בהמשך!
 

momoshlomo

New member
את האמת

כשאני מסתבך במשהו מסובך
אני מתחיל לפרק לדברים פשוטים. למשל במקרה שלך - שום דבר סודי לא ייחשף אם אובייקט שלך יהיה:

public class Person{

public FirstName string {get ;set;}
public LastName string {get; set;}
}

הרי לכולם ידוע שיש לאדם שם ושם משפחה.
אבל עם האובייקט הזה ניתן לשחק ולנסות ליצור את המצב שנכשל
ואם מצאת מתי זה נשכל ועדיין לא יודעת איך לפתור(בדרך כלל בשלב זה ברור מה היה לא בסדר) -אפשר להעלות את הקוד לפה
 

tamarhp

New member
אבל המודל שלי הוא לא פרסון :)

זו היתה רק דוגמה.. וכשהעתקתי את הקוד שיניתי את השמות והנתונים.. בפועל זה מכיל איזה 10 משתנים שונים..
 

arielRuuubi

New member
כל הכבוד!!!

תזכרי את העקרון הזה של הזהות ואת רצה עם אגאקסים כבדים בדוט נט כמו בלרינה
 

tamarhp

New member
זה SPA והכל צריך להיות דינמי...

בכל אופן ככה הגדירו את המערכת וזה לא תלוי בי.
 

arielRuuubi

New member
ד"א

ברמת הארכיטקטורה הר"צ שלי הסתכל היום וציין שיותר נכון (וקל) ברגע שאת שולחת אגאקס לשלוח אובייקט מתאים ולטפל בו בהתאם ולא להשתמש במודל וVIEW MODEL, אולי זה יקל מעליך...
 
למעלה