Я работаю над одностраничным приложением в бета-версии ASP.NET MVC 4, который не срабатывает (я думаю), в настоящий момент всплывающие окна пытаются сопоставить JSON, возвращенный моим контроллером.Проблемы с картированием upshot asp.net mvc4
Мой проект работает с эссе, который требует некоторой личной информации, некоторые открытые вопросы + ответы и еще несколько Лайкерта вопросы + ответы (согласен, не согласен и т.д.)
Вот как моя модель выглядит:
// Essay contains personal information, questions and related answers
public class EssayResult {
public EssayResult() {
if(FinishedAt == null)
FinishedAt = DateTime.Now;
PersonInfo = new PersonInfo();
LikertAnswers = new List<LikertAnswer>();
OpenAnswers = new List<OpenAnswer>();
}
public int EssayResultId {get; set;}
public DateTime? FinishedAt {get; set; }
public virtual int PersonInfoId {get; set; }
public virtual PersonInfo PersonInfo {get; set; }
public virtual ICollection<LikertAnswer> LikertAnswers {get; set; }
public virtual ICollection<OpenAnswer> OpenAnswers {get; set; }
}
// Contains some information about the person who's doing the essay
public class PersonInfo {
public int PersonInfoId {get; set;}
[Required]
public int Age {get; set; }
[Required]
public Education Education {
get { return (Education) EducationValue; }
set { EducationValue = (int) value; }
}
[Required]
public Gender Gender {
get { return (Gender) GenderValue; }
set { GenderValue = (int) value; }
}
[Required]
public bool RobotExperience {get; set; }
// Workaround to get enums mapped
public int EducationValue {get; set; }
public int GenderValue {get; set; }
}
public enum Education {
Middelbaar,
Mbo,
Hbo,
Wo
}
public enum Gender {
Man,
Vrouw
}
public class LikertQuestion {
public int LikertQuestionId {get; set; }
[Required]
public string Name {get; set; }
[Required]
public string Question {get; set; }
}
public class LikertAnswer {
// Primary key and Question-relation
public int LikertAnswerId {get; set; }
public virtual int LikertQuestionId {get; set; }
public virtual LikertQuestion LikertQuestion {get; set; }
public virtual int EssayResultId {get; set; }
public virtual EssayResult EssayResult {get; set; }
// Properties
public LikertScale Answer {get; set;}
}
public class OpenQuestion {
public int OpenQuestionId {get; set; }
public string Question {get; set; }
}
Мой контроллер кажется вернуть правильную JSON:
{
"EssayResultId": 0,
"FinishedAt": "/Date(1338204633030+0200)/",
"LikertQuestionId": 0,
"LikertAnswers": [
{
"Answer": 0,
"EssayResult": null,
"EssayResultId": 0,
"LikertAnswerId": 0,
"LikertQuestion": {
"LikertQuestionId": 1,
"Name": "PU01",
"Question": "Ik denk dat robots nuttig zijn"
}
},
...
],
"OpenAnswers": [
{
"Answer": null,
"EssayResult": null,
"EssayResultId": 0,
"OpenAnswerId": 0,
"OpenQuestion": {
"OpenQuestionId": 1,
"Question": "Wat komt er als eerste in u op bij het horen van het woord 'robot'?"
},
"OpenQuestionId": 0
},
... ],
"PersonInfo": {
"Age": 12,
"Education": 0,
"EducationValue": 0,
"Gender": 0,
"GenderValue": 0,
"PersonInfoId": 0,
"RobotExperience": false
},
"PersonInfoId": 0
}
Некоторые ссылки не установлены, так как эти объекты были созданы с помощью контроллера, а не о f вытащили из БД.
Нокаут не может отобразить это в допустимую модель просмотра, он не вызывает никаких ошибок, но когда я проверяю переменную viewmodel с помощью firebug, он показывает множество функций upshot и т. Д., А не viewmodel и handfull of дополнительные функции восстановления.
Это мой первый Knockout, Upshot и SPA проект так что я вроде потерял с развязок doens't бросать какие-либо ошибки и модель верна на стороне сервера/дб уровня ...
Если мне нужно поставьте более подробную информацию, дайте мне знать. :) Я следил за учебником ToDo-items и примером отследителя доставки Стива Сандерсона, поэтому я думаю, что это должно быть что-то с моей моделью/картографированием.?
Sander
Update: Я удалил свойство FinishedAt, так как это, по-видимому, в неправильном формате, но даже это не помогло .. до сих пор не знаю, почему мой ViewModel не будет оказывать, json кажется прекрасным.
Если вы могли бы показать нам, что вы на самом деле видите в модели просмотра ko, или как вы пытаетесь связать ее с последним DS, мы могли бы помочь вам больше –