我正在MVC 5应用程序中创建一个动态用户控件。我的视图模型如下所示:
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; }
}NewParameterName可以是int、string、bool或任何数据类型。
我从存储过程参数中获取NewParameterName值
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);
}我的CommonHelper.ConvertSmoToClsType看起来是这样的:
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...
}
}我试图使用HTML.Editor来显示用户控件。
@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>
}我使用这个链接-> ASP.NET MVC3 Html.EditorFor and property of type object引用了我的代码,但是这个解决方案不适用于list。
如何在foreach循环中使用Html.Editor或Html.EditorFor显示控件?
发布于 2014-08-04 15:36:04
EditorFor无法准备空字符串,所以我所做的就是更改这一行代码。
Object = (String.IsNullOrEmpty(currentValue)) ? String.Empty : currentValue;至
Object = (String.IsNullOrEmpty(currentValue)) ? " " : currentValue;我还将代码更改为
<td>@Html.Editor("NewParameterName")</td>至
<td>@Html.EditorFor(model => obj.ParameterValue)</td>它现在起作用了,除了我的双目标。你有什么想法吗?
https://stackoverflow.com/questions/25088115
复制相似问题