2012-08-06 1 views
0

그래서 난이이 JSONAsp.net MVC 3 JSON 모델 바인더

mrn:"0760433" 
res:[{"registry":1,"episodeType":{"id":6,"dateAndTime":"08-06-2012 13:21"}}] 

그리고 나는이보기 모델

public class patient 
    { 
     public string mrn { get; set; } 

    } 

    public class episodeType 
    { 
     public int id { get; set; } 
     public string dateAndTime { get; set; } 
    } 

    public class registryEpisode 
    { 
     public int registry { get; set; } 
     public episodeType episodeType { get; set; } 

     public registryEpisode() 
     { 
      registry = 0; 
      episodeType = new episodeType(); 
     } 
    } 

그리고이 컨트롤러의 서명이 있습니다

public JsonResult StartSession(string mrn, List<registryEpisode> res) 

I을 post, res는 항상 null입니다. 이견있는 사람? 내가 도대체 ​​뭘 잘못하고있는 겁니까? 예, 게시하고, 그래 내가 사용하고있는 JQuery와 :

$.post('Action', data, function() {}); 

예, 내 컨트롤러 내 행동에 도착,하지만 입술은 null입니다. 도움! 언제나처럼 미리 감사드립니다 ...!

+0

나는 날짜가 약간 이상하게 보일지 모르겠다. JSON.stringify (new Date())를 작성하면 또 다른 형식을 얻습니다 ... 쉬운 디버깅을 위해 .NET 클래스에서 일부 속성을 제거하고 어떤 것을 뒤죽박죽 시도해보십시오. –

+0

날짜 속성은 다음과 같습니다. 문자열 ... 형식에 상관없이 괜찮습니다. 나는 모든 속성을 제거 ... 그들은 재미있는 것은 MRN 어떤 문제와 함께 건너오고있다 ... 그 문제의 컬렉션 – jsteve81

+0

좀 더 많은 정보, 내가 Request.Form [ "res"를 볼 때 명령 창에서 디버깅하는 동안 다음과 같은 정보를 얻습니다. [{\ "registry \": 1, \ "episodeType \": \ "id \": 6, \ "dateAndTime \": \ "08-06-2012 13 : 57 \ }}]. 나는 아직도 문제가 어디에 있는지 알 수 없다. 이것은 모델 바인더의 한계입니까? 나 자신을 구현해야합니까? – jsteve81

답변

1

그래서 이것은 흥미로운 문제입니다 ... 나는 녹아웃을 사용하고 있습니다. Knockout에는 viewModel을 pojo (평범한 구형 JSON 객체) 또는 pojso (일반 구형 자바 스크립트 객체)로 전달할 수있는 몇 가지 기능이 있습니다.

여기 duh 순간이 있습니다 ... asp.net 모델 바인더는 변환을 위해 문자열로 된 JSON 문자열을 기다리고 있습니다. 당신이 당신의 행동에 대한 인수로 문자열과 같은 원시적 인 형태와 컬렉션을 때 녹아웃의 toJSON stringifies viewModels 이미, 그래서 당신은 다음과 같은 컬렉션을 얻을

var m = self.model.property();

같은 원시적 형의 값을 얻을 수있다 pojso,

처럼

var c = ko.toJS(self.model.collection)

var data = JSON.stringify({prop1: m, prop2: c}); 같은 하나 개의 완전한 뷰 모델로 캐릭터 라인 화.

마지막으로, 당신은 분명히 트릭을 수행

public JsonResult StartSession(string prop1, IList<registryEpisode> prop2){}

같은 작업 방법에 JQuery와 아약스 호출로 모델의 서버 측을 보낼 수 있습니다. 내게 해킹처럼 보이지만 작동합니다. 희망이 다른 사람을 도와줍니다.