Vous n'avez fourni aucune information à ce sujet Emp Table
. La bonne façon de réaliser cela dans ASP.NET MVC est d'abstraire l'accès aux données dans un référentiel et ce dépôt de votre contrôleur:
public interface IEmployeesRepository
{
IEnumerable<Employee> GetEmployees();
}
Et maintenant votre contrôleur devient:
public class HomeController: Controller
{
private readonly IEmployeesRepository _repository;
public HomeController(IEmployeesRepository repository)
{
_repository = repository;
}
public ActionResult Index()
{
var model = new MyViewModel
{
Employees = _repository.GetEmployees()
};
return View(model);
}
}
Comme vous peut voir l'accès aux données est abstraite du contrôleur et il ne se soucie pas vraiment d'où viennent ces employés. C'est à ce moment que cela cesse d'être une question liée ASP.NET MVC et devient une question sur la façon de mettre en œuvre cette interface en utilisant une technologie d'accès aux données. Supposons que vous utilisiez Linq to Entities comme ORM. Votre mise en œuvre pourrait ressembler à ceci:
public class EmployeesRepositorySql: IEmployeesRepository
{
public IEnumerable<Employee> GetEmployees()
{
using (var db = new EmployeesDbContext())
{
return db.Employees;
}
}
}
OK, comme vous pouvez le voir, nous avons introduit la classe de contexte de données qui est généré automatiquement par Visual Studio lorsque vous ajoutez une nouvelle entité à partir d'une base de données existante. Si vous n'êtes pas familier avec Entity Framework, vous pouvez lire certains getting started tutorials.
ou si vous préférez utiliser directement ADO.NET:
public class EmployeesRepositorySql: IEmployeesRepository
{
public IEnumerable<Employee> GetEmployees()
{
using (var conn = new SqlConnection("SOME CONNECTION STRING"))
using (var cmd = conn.CreateCommand())
{
conn.Open();
cmd.CommandText = "SELECT Id, Name FROM Employees;";
using (var reader = cmd.ExecuteReader())
{
while (reader.Read())
{
yield return new Employee
{
Id = reader.GetString(0),
Name = reader.GetString(1)
};
}
}
}
}
}
La dernière partie qui reste est de demander à notre contrôleur d'utiliser cette implémentation particulière du référentiel. Cela pourrait être réalisé avec un cadre DI. Voici un article explaining ceci.
que voulez-vous dire "où devrais-je faire cela?" faites-le dans le code où vous affectez à la propriété 'Employees' à l'objet' MyViewModel'. – RPM1984
Merci ... Mais, je ne sais pas comment obtenir les valeurs du backend et de lier dans la liste. – RobinHood