다음과 같은 모델, 뷰 및 컨트롤러가 있습니다.MVC 3 - JSON 시리얼 라이저
모델
public class Person {
public string Name;// { get; set; }
public string Occupation { get; set; }
public int Salary { get; set; }
public int[] NumArr { get; set; }
}
보기
<input type="button" id="Test" value="Test" />
@section Javascript{
<script type="text/javascript">
$(function() {
$("#Test").click(function() {
var data = { Name: "Michael Tom", Occupation: "Programmer", Salary: 8500, NumArr: [2,6,4,9] };
var url = "Home/GetJson";
$.ajax({
url: url,
dataType: "json",
type: "POST",
data: data,
traditional: true,
success: function (result) {
}
});
});
});
</script>
}
컨트롤러
위의 그 코드를 기반으로public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}
public JsonResult GetJson(Person person) {
return Json(......);
}
}
, I 세 가지 질문을하고 싶습니다.
우리가 대신 속성의 공공 필드를 사용하는 경우, 시리얼 라이저는 C#을 모델로 JSON 개체 그래서 난 항상 컨트롤러의 "이름"필드에 null을 얻을 직렬화하지 않습니다. 왜 그렇게 된거야?
NumArr 속성 유형을 List로 변경하면 작동하지 않습니다. int [] 대신 List를 어떻게 사용할 수 있습니까? 내가 JS에서 배열을 전달하는 거 알아. JS에서 List를 전달할 수 있습니까?
serialization이 "traditional : false"로 작동하지 않기 때문에 View의 Javascript 코드 블록에서 "traditional : true"를 사용하고 있습니다. jQuery에는 세 가지 버전의 Json serializer가 있다고 들었습니다. ASP.NET MVC의 serializer는 이전 버전 만 지원합니다. 사실입니까?
3.1. 사실이라면 jQuery의 최신 버전을 지원하는 MVC의 시리얼 라이저의 최신 버전을 언제 얻을 것인지 알고 싶습니다.
3.2. 사용자 정의 뷰 엔진을 등록 할 수있는 것처럼 사용자 정의 Javascript Serializer를 등록 할 수있는 방법이 있습니까? 내 친구는 저에게 사용자 정의 값 공급자 또는 사용자 정의 모델 바인더를 등록하고 사용자 정의 값 공급자/모델 바인더에서 사용자 정의 JS 직렬기를 사용할 수 있다고 제안했습니다.
미리 감사드립니다. 제 질문에 대해 명확하지 않으면 알려주십시오. 감사!
세부 사항을 보내 주셔서 감사합니다. 감사! –