다음과 같은 작업 방법이 있습니다.DefaultModelBinder 및 상속 된 객체의 컬렉션
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create(Form newForm)
{
...
}
은 내가 아약스 JSON 데이터에서 데이터를로드하고자하는 다음과 같은 클래스와 함께 모델이있다.
public class Form
{
public string title { get; set; }
public List<FormElement> Controls { get; set; }
}
public class FormElement
{
public string ControlType { get; set; }
public string FieldSize { get; set; }
}
public class TextBox : FormElement
{
public string DefaultValue { get; set; }
}
public class Combo : FormElement
{
public string SelectedValue { get; set; }
}
다음은 JSON 데이터입니다.
{ "title": "FORM1",
"Controls":
[
{ "ControlType": "TextBox", "FieldSize": "Small" ,"DefaultValue":"test"},
{ "ControlType": "Combo", "FieldSize": "Large" , "SelectedValue":"Option1" }
]
}
$.ajax({
url: '@Url.Action("Create", "Form")',
type: 'POST',
dataType: 'json',
data: newForm,
contentType: 'application/json; charset=utf-8',
success: function (data) {
var msg = data.Message;
}
});
DefaultModelBinder는 중첩 된 개체 구조를 처리하지만 다른 하위 클래스는 확인할 수 없습니다.
각 하위 클래스로 List를로드하는 가장 좋은 방법은 무엇입니까?
여기에서 수행하려는 작업에 대해 자세히 설명 할 수 있습니까? 전체 양식을 전달하는 값 대신 뷰 모델로 바인딩하려고하는 것처럼 보입니다. 백엔드가 제공하는 일부 JSON 데이터를 기반으로 양식을 동적으로 생성한다는 점을 알 수 있지만 사용자가 양식을 채울 때만 값 대신 구조 자체를 다시 제공하려는 이유를 이해하기 위해 애 쓰고 있습니다. –
양식을 동적으로 생성하지 않습니다. 나중에 시스템에 저장 될 형식의 구조를 나타내는 json을 수락합니다. – Thurein