2012-05-28 4 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에서 끌어 낸다.

노크 아웃이 이것을 유효한 뷰 모델로 매핑하지 못하면 아무런 메시지도 표시하지 않지만 firebug로 viewmodel-variable을 검사하면 viewmodel과 handfull 대신에 upshot-functions 등이 많이 표시됩니다. 추가 upshot 기능.

내가 필요하면 ...이 그래서 내가 좀 upshots 이후 잃었어요 처음으로 넉 아웃, 결말과 SPA 프로젝트

오류를 던져 넣은 사람은 아니다 및 모델은 서버 쪽/DB-수준에서 정확 더 자세한 정보를 알려주십시오. :) 나는 ToDo-items 튜토리얼과 Steve Sanderson의 Delivery Tracker 예제를 따라했습니다. 그래서 내 모델/매핑 ..과 뭔가 있어야합니다.

샌더

업데이트 : 그것은 잘못된 형식으로 분명하지만 이후이 FinishedAt 속성을 제거했습니다도 내 ViewModel을 렌더링하지 않습니다 .. 왜 아직도 모르는 도움이되지 않았다, json은 괜찮아 보입니다.

+0

실제로 ko viewmodel에 표시되는 내용을 표시하거나 위 사진 DS에 바인딩하려는 경우 어떻게하면 더 많은 도움을 드릴 수 있습니까? –

답변

0

Upshot과 서버 측은 순간에 ASP.NET MVC 4 RTM의 일부가 아닙니다. 그래서 나는 조금 기다릴 것입니다. 미래가 결정되기 위해서입니다.