2011-11-23 2 views
1

jquery UI datepicker를 사용하여 fromto 날짜를 컨트롤러에 보냅니다. 내 문제는 컨트롤러가 게시물 데이터를 가져 오지 못한다는 것입니다. 내보기에컨트롤러가 포스트 데이터를 가져 오지 않습니다.

:

to_date.datepicker({ 
    dateFormat: 'yy-mm-dd', 
    onSelect: function (selectedDate, inst) { 
     if (from_date.datepicker("getDate") > to_date.datepicker("getDate")) { 
     // error check 
     } else { 
      var from = from_date.val(); 
      var to = selectedDate; 

      var data = { 
       FromDate: from, 
       ToDate: to 
      }; 

      var jsonData = JSON.stringify(data); 

      $.ajax({ 
       type: 'POST', 
       url: 'View', 
       dataType: 'json', 
       contentType: 'application/json; charset=utf-8', 
       cache: false, 
       data: jsonData 
      }); 
     } 
    } 
}); 

내 컨트롤러는 :

[HttpPost] 
public JsonResult DorView(string dates) 
{ 
    if (ModelState.IsValid) 
    { 

     JavaScriptSerializer js = new JavaScriptSerializer(); 

     // Will die on this line because dates is empty 
     DatePicker JsonDate = js.Deserialize<DatePicker>(dates); 

     return Json(dates); 
    } 

    return Json(dates); 
} 
+0

@SeanThoman, 그러나 '날짜' (serializer가 초기화되기 바로 전에 호출됩니다.) 클라이언트 측에서는 JSON이 게시되는 것을 볼 수 있으므로이 경우에는 Deseralizer라고 생각하지 않습니다. –

+0

당신 말이 맞아요. 처음에는 잘못 읽었 기 때문에 제 의견은 삭제되었습니다. –

답변

1

컨트롤러에서 JSON 역 직렬화를 수동으로 수행 할 필요가 없습니다. 보기 모델을 사용하고 기본 모델 바인더를 그대로두면됩니다.

그래서 뷰 ​​모델

public class Dates 
{ 
    public DateTime FromDate { get; set; } 
    public DateTime ToDate { get; set; } 
} 

를 정의하고 컨트롤러 액션이 인수로이보기 모델을 가지고있다 : 나는 포스트에서 내 디버그 문을 왼쪽

[HttpPost] 
public ActionResult DorView(Dates dates) 
{ 
    if (ModelState.IsValid) 
    { 
     // do something with dates.FromDate and dates.ToDate 

     return Json(dates); 
    } 

    return Json(dates); 
} 
+0

이것은 문제의 일부입니다. 내 JSON 문자열이 제대로 구성되지 않았습니다. 고맙습니다! –

0

당신은 dates라는 이름의 키를 키 값 쌍을 보내야합니다.

 $.ajax({ 
      type: 'POST', 
      url: 'View', 
      dataType: 'json', 
      contentType: 'application/json; charset=utf-8', 
      cache: false, 
      data: "dates=" + jsonData 
     }); 
관련 문제