Aşağıda benzer bir işlem yöntemim var.DefaultModelBinder ve devralınan nesnelerin toplanması
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create(Form newForm)
{
...
}
Ajax JSON verilerinden veri yüklemek istediğim aşağıdaki sınıflara sahip bir modelim var.
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; }
}
İşte JSON verisi.
{ "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, iç içe geçmiş nesne yapısını ele alıyor ancak farklı alt sınıfları çözemiyor.
Listeyi ilgili alt sınıflarla yüklemenin en iyi yolu ne olurdu?
Burada neyi başarmaya çalıştığınızı daha ayrıntılı olarak açıklayabilir misiniz? Tüm formu, taşıdığı değerler yerine, görünüm modeline bağlamaya çalışıyorsunuz gibi görünüyor. Arka uçların sağladığı bazı JSON verilerine dayanarak dinamik olarak formları oluşturmanın noktasını görebiliyorum ancak neden sadece bir kullanıcı formda dolduğunda değerlerin yerine yapıyı yeniden sunmak istediğimi anlamak için uğraşıyorum. –
Formu dinamik olarak oluşturmuyorum. Daha sonra sistemde saklanacak olan formun yapısını temsil eden jsonu kabul ediyorum. – Thurein