我为自定义页面创建了一个viewmodel类。我有一个存储过程,它返回DataTable(ORM工具)。我不能改变这个程序。但我想在视图列表中显示存储过程中的记录。如何在列表视图中显示数据表中的值?我感谢任何帮助。
谢谢,
public class CreateViewModel
{
[Required]
public DateTime StartDate {get; set;}
[Required]
[StringLength(250, ErrorMessage = "Details must be less than 250 characters")]
public string Details { get; set; }
}
答案 0 :(得分:0)
执行此操作的主要方法是将数据表的每一行中的列值读取到视图模型实例中。这是常规的DataTable访问方式。这应该在从控制器操作调用的服务层中完成。
如果您无法更改存储过程,但未绑定到DataTable,则执行SqlCommand以返回SqlReader。然后,您可以使用以下代码(类似)访问数据:
var list = new List<MyViewData>();
while(reader.Read())
{
var model = new MyViewData();
model.Property = reader.GetString(reader.GetOrdinal("ColumnName"));
// .. etc..
list.Add(model);
}
return list;
这将访问从存储过程返回的记录集。
然后,您可以将视图的模型属性设置为IEnumerable,然后您可以在视图中使用foreach访问每个实例。
希望这有帮助。