【发布时间】:2013-07-25 21:47:53
【问题描述】:
我是 MVC 的新手,正在尝试编写一个简单的 MVC 3 应用程序,该应用程序读取模型类中的客户数据并使用控制器将其返回给视图。阅读器显示它有行,但是当加载到表并作为模型传递给视图时,它为空。我需要一个简单的解决方案来传递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,然后将其传递到您的视图中。为了让您的生活更轻松,请尝试Entity Framework。 -
我真的试图避免使用 EF 并使用我自己的 DAL 类型类。我正在传递一个数据表及其工作视图。但是我会修改你对一个类的建议,然后看看它是否需要更少的代码。感谢提示
标签: c# asp.net asp.net-mvc asp.net-mvc-3