Я новичок в MVC и пытаюсь написать простое приложение MVC 3, которое считывает данные клиента внутри класса в модели и возвращает его для просмотра с помощью контроллера. Читатель показывает, что он имеет строки, но при загрузке в таблицу и переходе на просмотр в качестве модели он равен нулю. Мне нужно простое решение пройти либо 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, а затем передает это в ваш вид. Чтобы облегчить вашу жизнь, попробуйте [Entity Framework] (http://msdn.microsoft.com/en-us/data/ef.aspx). – Jay
Я действительно пытался избежать EF и использовать свои собственные классы типа DAL. Я передаю данные и их работу на виду. Но я изменю свое предложение на класс, а затем посмотрю, требуется ли его меньше кода. Спасибо за подсказку – Ammad