Asp.net ViewModel:如何在列表视图中显示datatable中的值

Asp.net ViewModel:如何在列表视图中显示datatable中的值,asp.net,asp.net-mvc,Asp.net,Asp.net Mvc,我已经为自定义页面创建了viewmodel类。我有一个返回数据表的存储过程(ORM工具)。我不能改变这个程序。但我想显示视图列表上存储过程中的记录。如何在列表视图中显示数据表中的值?谢谢你的帮助 谢谢 public class CreateViewModel { [Required] public DateTime StartDate {get; set;} [Required] [StringLength(250, ErrorMessage =

我已经为自定义页面创建了viewmodel类。我有一个返回数据表的存储过程(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; } 
} 

这样做的主要方法是从datatable的每一行读取列值到视图模型实例中。这是常规的数据表访问方式。这应该在从控制器操作调用的服务层中完成

如果无法更改存储的进程,但未绑定到DataTable,则如果执行SqlCommand以返回SqlReader。然后,您可以使用以下代码访问数据(类似于):

var list=newlist();
while(reader.Read())
{
var模型=新的MyViewData();
model.Property=reader.GetString(reader.GetOrdinal(“ColumnName”);
//……等等。。
列表。添加(模型);
}
退货清单;
这将访问从存储过程返回的记录集

然后,可以将视图的模型属性设置为IEnumerable,然后可以使用foreach访问视图中模型上的每个实例


希望这有帮助。

没问题。很高兴我能帮忙:-)
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;