依赖注入(Dependency Injection,简称DI)是一种设计模式,它允许以可配置的方式将组件的依赖关系传递给组件本身。在ASP.NET Core2.0中,依赖注入的使用变得非常简单,并且可以直接在视图页面中绑定结果。本文将详细介绍如何创建ASP.NET Core项目,以使用依赖注入将学生详细信息绑定到视图页面。
在开始之前,请确保计算机上已经安装了所有必要的先决条件。如果没有,请逐个下载并安装。首先,从以下链接下载并安装Visual Studio2017:
在安装了上述先决条件之后,双击桌面上的Visual Studio2017图标。点击“新建”>>“项目”。选择“Visual C#”>>“ASP.NET Core2.0”,输入项目名称并点击“确定”。选择“Web应用程序(Model-View-Controller)”并点击“确定”。项目创建完成后,需要添加一个类、接口和服务,以便在ASP.NET Core应用程序中使用依赖注入。
首先,将创建一个类。为此,在项目中创建一个名为“Data”的文件夹,如下所示:
现在已经在项目中创建了一个名为“Data”的文件夹,下一步是创建一个名为“StudentDetails”的类。右键单击“Data”文件夹并添加一个名为“StudentDetails”的新类。在“StudentDetails”类中,为每个学生创建属性,如学生姓名、科目和成绩:
public class StudentDetails
{
public string StudentName { get; set; }
public string Subject1 { get; set; }
public string Subject2 { get; set; }
public string Subject3 { get; set; }
public string Subject4 { get; set; }
public string Subject5 { get; set; }
public string Grade { get; set; }
}
现在是创建一个接口的时候了,接口中的方法名为“GetAllStudentDetails”,将在服务中实现这个接口。如之前所见,向“data”文件夹中添加一个新类,并将类命名为“IStudentDetailService”。将把这个类更改为接口,因为将创建一个接口来在服务中实现。在这个接口中,声明了一个名为“GetAllStudentDetails”的方法,返回类型为IEnumerable:
public interface IStudentDetailService
{
IEnumerable GetAllStudentDetails();
}
首先,在项目中创建一个名为“Services”的文件夹,右键单击项目并创建一个名为“Services”的新文件夹。现在让在这个文件夹中添加一个新类,并将其命名为“StudentService”,在这个类中,将实现接口IStudentDetailService。知道,如果实现了接口,那么类中应该包含接口方法。在这项服务中,使用接口方法,并返回包含学生详细信息的列表。将直接在视图页面中注入这个服务:
using ASPNETCOREDependencyInjection.Data;
namespace ASPNETCOREDependencyInjection.Services
{
public class StudentService : IStudentDetailService
{
public IEnumerable GetAllStudentDetails()
{
return new List
{
new StudentDetails { StudentName = "Afreen", Subject1 = ".Net Programming", Subject2 = "Operating System", Subject3 = "Web Programming", Subject4 = "Networks", Subject5 = "C# & OOP", Grade = "A" },
new StudentDetails { StudentName = "Kather", Subject1 = ".Net Programming", Subject2 = "Operating System", Subject3 = "Web Programming", Subject4 = "Networks", Subject5 = "C# & OOP", Grade = "A" },
new StudentDetails { StudentName = "Asha", Subject1 = ".Net Programming", Subject2 = "Operating System", Subject3 = "Web Programming", Subject4 = "Networks", Subject5 = "C# & OOP", Grade = "A" },
new StudentDetails { StudentName = "Afraz", Subject1 = ".Net Programming", Subject2 = "Operating System", Subject3 = "Web Programming", Subject4 = "Networks", Subject5 = "C# & OOP", Grade = "B" },
new StudentDetails { StudentName = "Shanu", Subject1 = ".Net Programming", Subject2 = "Operating System", Subject3 = "Web Programming", Subject4 = "Networks", Subject5 = "C# & OOP", Grade = "C" }
};
}
}
}
需要将创建的服务注册到容器中。打开项目的Startup.cs文件,将服务添加到容器中。在Startup.cs类中,找到名为ConfigureServices的方法,将像下面这样添加服务“StudentService”:
public void ConfigureServices(IServiceCollection services)
{
services.AddTransient();
services.AddMvc();
}
现在这变得非常简单和容易,因为可以直接在视图页面中注入服务,并将所有结果绑定到视图页面。为了在视图中注入服务,将使用现有视图页面,即Home>>Index.cshtml。在“Index.cshtml”中,注入StudentService,并将所有结果绑定到表格中:
@inject ASPNETCOREDependencyInjection.Services.StudentService student
@if (student.GetAllStudentDetails().Any())
{
Student Name
Subject 1
Subject 2
Subject 3
Subject 4
Subject 5
Grade
@foreach (var std in student.GetAllStudentDetails().OrderBy(x => x.StudentName))
{
@std.StudentName
@std.Subject1
@std.Subject2
@std.Subject3
@std.Subject4
@std.Subject5
@std.Grade
}
}
构建并运行项目,将看到所有学生详细信息将显示在主页上。