मेरे पास इस तरह की एक क्रिया विधि है।DefaultModelBinder और विरासत वाले वस्तुओं का संग्रह
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create(Form newForm)
{
...
}
मेरे पास निम्न वर्गों वाला एक मॉडल है, जिसे मैं AJAX 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;
}
});
डिफ़ॉल्ट मॉडेलबिंडर नेस्टेड ऑब्जेक्ट संरचना को संभालने वाला है लेकिन यह विभिन्न उप वर्गों को हल नहीं कर सकता है।
संबंधित उप-वर्गों के साथ सूची लोड करने का सबसे अच्छा तरीका क्या होगा?
क्या आप आगे विस्तार से समझा सकते हैं कि आप यहां क्या करने की कोशिश कर रहे हैं? ऐसा लगता है कि आप पूरे फॉर्म को केवल उस मूल्य के बजाय व्यूमोडेल में बांधने की कोशिश कर रहे हैं। मैं बैकएंड प्रदान करता है कुछ जेएसओएन डेटा के आधार पर गतिशील रूप से रूपों को उत्पन्न करने में बिंदु देख सकता हूं, लेकिन मैं यह समझने के लिए संघर्ष करता हूं कि जब आप उपयोगकर्ता फॉर्म में भरते हैं तो आप केवल मूल्यों के बजाय बैकएंड को संरचना क्यों प्रदान करना चाहते हैं। –
मैं गतिशील रूप से फॉर्म उत्पन्न नहीं कर रहा हूं। मैं जेसन स्वीकार कर रहा हूं जो फॉर्म की संरचना का प्रतिनिधित्व करता है जिसे बाद में सिस्टम में सहेजा जाएगा। – Thurein