برای همچین کاری مجبور هستید که ControlName همه ی Control هارو یکسان بزارید ، بعنوان مثال به این شکل :
_controls = new List<ControlInfo>
{
new ControlInfo
{
ControlType = "TextBox",
ControlName = "items",
ControlID = "firstname",
ControlLabel = "Name",
ControlValue = "Moien"
},
new ControlInfo
{
ControlType = "Checkbox",
ControlName = "items",
ControlID = "isAdmin",
ControlLabel = "Admin",
ControlValue = "Admin ?",
IsChecked = false
}
};
در این صورت باید در اکشن POST ، آرایه ای از items رو دریافت کنید :
[HttpPost]
public ActionResult Index(string[] items)
{
return Content("Ok");
}
با این روش بصورت Dynamic اطلاعات رو دریافت میکنید ، اما برای تشخیص اینکه نوع کنترلی که Value از سمتش میاد چی هست ، میتونید به ابتدای value ها ، type کنترل رو اضافه کنید.
مثال :
کد HTML:
<input type="text" name="@controlInfo.ControlName" id="@controlInfo.ControlID" value="input::@controlInfo.ControlValue" class="form-control" />
و به این شکل Type کنترل رو هم دریافت میکنید و داخل دیتابیس ذخیره میکنید و بعدا موقع Retreive کردن از دیتابیس ، بر اساس type که قبل از :: گذاشتید با Switch کردنش ، کنترل مربوط رو Render میکنید.