Я строю форму на основе модели с этой структурой
public class DynamicFormElementsModel
{
//param might be shown in UI , but will not pass while setting params for report . Example select org.
public bool ReportParameter { get; set; }
public string ParamName { get; set; }
public string ParamLabel { get; set; }
public string ParamType { get; set; }
public bool Visible { get; set; }
public string ParamValue { get; set;}
}
А в Razor я создаю управление, как
@using (Html.BeginForm("Index", "Reports", FormMethod.Post, new { role = "form" }))
{
@Html.HiddenFor(p => Model.ReportId)
for (int i = 0; i < Model.Parameters.Count(); i++)
{
<div class="form-group">
<label class="control-label">@Model.Parameters[i].ParamLabel</label>
@switch (@Model.Parameters[i].ParamType.ToLower())
{
case "textbox":
if (@Model.Parameters[i].Visible)
{
<input type="text" class="form-control" value="@Model.Parameters[i].ParamValue" name="@Model.Parameters[i].ParamName" />
}
else
{
<input type="hidden" value="@Model.Parameters[i].ParamValue" name="@Model.Parameters[i].ParamName" />
}
break;
default:
break;
}
</div>
}
<input type="submit" class="btn btn-default" value="Submit" />
}
При таком подходе обычные текстовые поля будут правильно отображаться. Но как я могу сделать раскрывающийся список и заполнить раскрывающийся список из идентификатора таблицы, пары имя-значение из таблицы sql