I am creating a dynamic user control in MVC 5 application. My view model looks like this:
public class StoredProceduerParametersRecordViewModel
{
public string ProcedureName { get; set; }
public string ParameterName { get; set; }
public string ServerName { get; set; }
public object ParameterValue { get; set; }
//public object NewParameterName { get; set; }
}
The NewParameterName could be an int, string, bool or any data type.
I am getting the NewParameterName values from Stored Procedure Parameters
List<StoredProcedureParameter> parameters = new List<StoredProcedureParameter>();
parameters = database.StoredProcedures[procedure.ProcedureName]
.Parameters.OfType<StoredProcedureParameter>()
.ToList();
foreach (var param in parameters)
{
StoredProceduerParametersRecordViewModel obj_parameter =
new StoredProceduerParametersRecordViewModel();
obj_parameter.ParameterName = param.Name;
obj_parameter.NewParameterName = CommonHelper.ConvertSmoToClsType(param.DataType.SqlDataType, string.Empty);
stored_procedure_parameters_list.Add(obj_parameter);
}
My CommonHelper.ConvertSmoToClsType looks like this:
public static object ConvertSmoToClsType(SqlDataType dataType, string currentValue)
{
object Object = new object();
switch (dataType)
{
case SqlDataType.BigInt:
Object = (String.IsNullOrEmpty(currentValue)) ? (Int64)0 : Int64.Parse(currentValue);
break;
case SqlDataType.Bit:
Object = (String.IsNullOrEmpty(currentValue)) ? (Boolean)false : Boolean.Parse(currentValue);
break;
case SqlDataType.Char:
case SqlDataType.VarChar:
case SqlDataType.VarCharMax:
Object = (String.IsNullOrEmpty(currentValue)) ? String.Empty : currentValue;
break;
case SqlDataType.Real:
case SqlDataType.Numeric:
case SqlDataType.Float:
Object = (String.IsNullOrEmpty(currentValue)) ? 0D : Double.Parse(currentValue);
break;
and so on...
}
}
I am trying to use HTML.Editor to display user controls
@foreach (var obj in Model.List_StoredProceduresParametersRecords_ViewModel)
{
<tr id="@obj.ParameterName">
<td class="parameterName" data-value="@obj.ParameterName">@obj.ParameterName</td>
<td>@Html.Editor("NewParameterName")</td>
</tr>
}
I referenced my code using this link ---> ASP.NET MVC3 Html.EditorFor and property of type object However, this solutions is not applicable for list.
How can I show the controls using Html.Editor or Html.EditorFor in my foreach loop?