ASP.NET MVC 4 응용 프로그램이 있습니다. Kendo.Grid가있는 View가 있고 컨트롤러에서 그리드의 데이터를 ajax (JSON.stringify)와 함께 보내고 싶습니다.
내 문제는 내 컨트롤러가 문자열 목록을 수신하고 Json 데이터를 역 직렬화하는 방법을 모른다는 것입니다.
암호
이것은 그리드의 행에 포함 된 객체입니다.
public class CourseDto
{
public string CodCourse { get; set; }
public string DesCourse { get; set; }
}
다음은 내보기의 그리드 정의입니다.
@(Html.Kendo().Grid<CourseDto>()
.Name("GridCourses")
.Columns(columns =>
{
columns.Bound(c => c.CodCourse);
columns.Bound(c => c.DesCourse);
})
.DataSource(dataSource => dataSource
.Ajax()
.ServerOperation(false)
.Read("GetAllCourses", "ControllerCourses")
)
)
이것은 jquery를 사용하는 컨트롤러에 대한 ajax 호출입니다.
function passTheGrid() {
$.ajax({
url: "@Url.Action("ShowCourses")",
type: "POST",
data: {
courses : JSON.stringify($("#GridCourses").data("kendoGrid").dataSource.data());
},
success: function (response) {
$("#coursesDiv").html(response);
}
});
}
이것이 컨트롤러입니다.
[HttpPost]
public PartialViewResult ShowCourses(List<string> courses)
{
JavaScriptSerializer js = new JavaScriptSerializer();
List<string> temp= new List<string>();
foreach (var singleCourse in courses)
{
temp.Add(js.Deserialize<string>(singleCourse));
}
...
return PartialView("_viewCourses");
}
내 예에서는 그리드에 cource 만 있고 컨트롤러에서 ajax로 데이터를 전달할 때 매개 변수 "courses"에 다음 문자열이 포함됩니다.
[{"CodCourse":"PRIVSIC0102006","DesCourse":"MULTIMEDIA - PRIVACY AND SECURITY"}]
하지만 역 직렬화하려고하면이 오류가 발생합니다.
'System.String'유형은 행렬의 역 직렬화에 지원되지 않습니다.
질문
컨트롤러에서 JSON 데이터를 올바르게 역 직렬화하려면 어떻게해야합니까?
코드 변경을 해결했습니다.
Ajax에 전화
function passTheGrid() {
var o = kendo.observable({
myCourses: $("#GridCourses").data("kendoGrid").dataSource.data()
});
var courses = JSON.stringify(o);
$.ajax({
url: "@Url.Action("ShowCourses")",
type: "POST",
data: {
courses : courses ,
success: function (response) {
$("#coursesDiv").html(response);
}
});
}
ajax 호출은 다음 데이터를 전달합니다.
{"myCourses":[{"CodCourse":"PRIVSIC0102006","DesCourse":"MULTIMEDIA - PRIVACY AND SECURITY"}]}
컨트롤러
[HttpPost]
public PartialViewResult ShowCourses(string courses)
{
var coursesJson = JObject.Parse(courses).SelectToken("myCourses").ToString();
var coursesList = JsonConvert.DeserializeObject<List<CourseDto>>(coursesJson);
...
return PartialView("_viewCourses");
}
코스 목록에는 CourseDto 개체가 포함됩니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다