我是MVC的新手,尝试编写一个简单的MVC 3应用程序,它读取模型中的类中的客户数据,并将其返回到使用控制器查看。 Reader显示它有行,但是当加载到表并传递给模型时,它是空的。我需要一个简单的解决方案来通过DataTable
查看或DataReader
查看我可以转换为DataTable
的位置。如何传递DataReader/DataTable来查看?
下面是代码:
namespace MvcApplication3.Models
{
public class Customer
{
public DataTable GetCustomers(OdbcDataReader rds)
{
String ConString = "DSN=Northwind;Uid=;Pwd=;";
String SQL = "SELECT * FROM CUSTOMERS";
DataTable tbl = new DataTable();
using (OdbcConnection con = new OdbcConnection(ConString))
{
con.Open();
OdbcCommand cmd = new OdbcCommand(SQL, con);
rds = cmd.ExecuteReader();
}
}
}
}
namespace MvcApplication3.Controllers
{
public class DefaultController : Controller
{
//
// GET: /Default1/
public ActionResult Index()
{
Customer cs = new Customer();
OdbcDataReader rd = new OdbcDataReader();
cs.GetCustomers(rd);
DataTable tb = new DataTable();
tb.Load(rd);
return View(tb);
}
}
}
不要将'DataReader'或'DataTable'传递给视图。不要将'DataReader'或'DataTable'传递给ViewModel。创建一个代表需要使用的数据的POCO - 这称为模型,将它传递给知道如何将该数据按摩为可呈现的类的类 - 这称为ViewModel,然后将其传递到View中。为了让您的生活更轻松地尝试[实体框架](http://msdn.microsoft.com/zh-cn/data/ef.aspx)。 – Jay
我真的试图避免EF和使用我自己的DAL类型的类。我正在传递一个数据表和它的视图。但我会修改你的建议给班级,然后看看是否需要更少的代码。感谢提示 – Ammad