2012-05-28 35 views
2

我正在处理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被拉出DB。

Knockout无法将其映射到一个有效的视图模型,它不会提示任何错误,但当我检查viewmodel变量与萤火虫它显示了一大堆upshot函数等,而不是viewmodel和handfull额外的结果功能。

这是我第一次淘汰赛,结果和SPA项目所以我自upshots有点失去了好好尝试一下抛出任何错误,模型是在服务器端/ DB级正确...

如果我需要提供更多细节让我知道。 :) 我遵循ToDo-items教程和Steve Sanderson的Delivery Tracker示例,所以我想它必须与我的模型/映射有关。

桑德

更新:我已经删除了FinishedAt的性能,因为它显然是在错误的格式,但即使这样也没有帮助..仍然不知道为什么我的视图模型将不会呈现, json似乎很好..

+0

如果您可以向我们展示您在ko viewmodel中实际看到的内容,或者您​​如何试图将其绑定到结果DS,我们可能会帮助您更多 –

回答

0

Upshot和服务器端在当下不是ASP.NET MVC 4 RTM的一部分。 所以我会等一下 - 为了未来的决定。