데이터 필터를 나타내는 복잡한 개체를 GET을 사용하여 작업에 전달해야합니다. GET은 csv 파일에 필터링 된 데이터 집합을 반환합니다. ASP.NET MVC : GET 매개 변수가 제대로 역 직렬화되지 않았습니다.
var filter = {
Folders = [
{ Positive: true, Reference: { Id: 19, Name: "Container" } },
{ Positive: true, Reference: { Id: 37, Name: "Bullseye" } },
]
}
해당 서버 측 클래스
가 같을 :public class MyFilter
{
public List<MyComparison> Folders { get; set; }
}
public class MyComparison
{
public bool Positive { get; set; }
public MyReference Reference { get; set; }
}
public class MyReference
{
public int Id { get; set; }
public string Name {get; set; }
}
필터 오브젝트 (간략화를 위해 단순화 실제로는 훨씬 더 복잡) 클라이언트 이런 뭔가 내 작업은 다음과 같습니다.
[HttpGet]
public FileContentResult Export(MyFilter filter, string sort, bool sortAscending)
{
string data = GetCsvData(filter, sort, sortAscending);
return this.File(StrToByteArray(data), "text/csv", "Data.csv");
}
ROM javacript like this :
function exportFilter(aFilter) {
var params = { filter: aFilter, sort: "Name", sortAscending: true };
var destination = "MyController/Export?" + decodeURIComponent($.param(params));
document.location = destination;
}
조치 내에서 sort 및 sortAscending 매개 변수가 모두 올바르게 채워집니다. 필터는 MyFilter 형식의 개체이지만 해당 Folders 속성은 null입니다.
ASP.NET MVC는 이러한 방식으로 복잡한 매개 변수를 적절하게 deserialize 할 수 있습니까 (즉, GET의 컨텍스트에서)? 이 문제를 해결하는 올바른 방법은 무엇입니까?
그것은 당신의 경우에 벌어지고 정확하게 말을 할 수 있지만, 어려운 디버깅하지 않고 .../aFilter에 무슨 일이 일어나고 있는지 –
을? – Dave
aFilter는 첫 번째 코드 예제에서 "filter"와 같은 javascript 객체를 얻습니다. –