ASP.NET Core 2.0 中的依赖注入






4.08/5 (13投票s)
如何在 ASP.NET Core 2.0 中使用依赖注入,并将结果绑定到我们的视图页面
引言
在本文中,我们将详细了解如何在 ASP.NET Core 2.0 中使用依赖注入。 现在在我们的 ASP.NET Core 应用程序中使用依赖注入变得更加容易,并且实际上非常简单。 我们使用结果绑定到我们的视图页面。 让我们详细了解如何创建 ASP.NET Core 项目,以使用依赖注入将 student
详细信息绑定到我们的视图页面。 希望您可能知道什么是依赖注入,如果您想了解有关依赖注入的更多详细信息,请从文章 依赖注入设计模式 和 ASP.NET Core 中的依赖注入 开始。
背景
必备组件
请确保您已在计算机上安装了所有先决条件。如果没有,请逐一下载并安装所有软件。
首先,从这个 链接 下载并安装 Visual Studio 2017。
Using the Code
代码部分
现在,是时候创建我们的第一个 Angular5 和 ASP.NET Core 应用程序了。
步骤 1 - 创建 ASP.NET Core 应用程序
安装上面列出的先决条件后,单击桌面上的 开始 >> 程序 >> Visual Studio 2017 >> Visual Studio 2017。
单击 新建 >> 项目。 选择 Visual C# >> 选择 Angular5Core2。 输入您的项目名称,然后单击 确定。
选择 ASP.NET Core 2.0,选择 Web 应用程序(Model-View-Controller),然后单击 确定。
我们的项目将被创建,现在我们需要添加一个类、接口和服务,以便在 ASP.NET Core 应用程序中使用依赖注入。
步骤 2 – 创建用于类的 Data 文件夹
首先,我们将从创建一个类开始,为此,从我们的项目创建一个文件夹并将其命名为 *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<StudentDetails> GetAllStudentDetails();
}
步骤 3 – 创建服务
首先,我们在项目中创建一个名为 *Services* 的文件夹,右键单击您的项目并创建一个名为“*Services*”的新文件夹。
现在让我们在此文件夹中添加一个新类,并将其命名为“*StudentService*”,并且在此类中,我们将实现我们的 Interface
IStudentDetailService
。 我们知道,如果实现 interface
,那么我们的类中应该有 interface
方法。 在此服务中,我们使用 interface
方法,并返回带有 student
详细信息的列表。 我们将直接在我们的视图页面中注入它。
using ASPNETCOREDependencyInjection.Data;
namespace ASPNETCOREDependencyInjection.Services
{
public class StudentService:IStudentDetailService
{
public IEnumerable<StudentDetails> GetAllStudentDetails()
{
return new List<StudentDetails>
{
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" }
};
}
}
}
步骤 4 – 注册服务
我们需要将我们创建的服务注册到容器,从您的项目中打开 *Startup.cs* 以将我们的服务添加到容器。
在 *Startup.cs* 类中,找到名为 ConfigureServices
的方法,我们将我们的服务“StudentService
”添加到如下位置
// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
services.AddTransient<StudentService, StudentService>();
services.AddMvc();
}
步骤 5 – 在视图页面中注入服务
现在它更简单,更容易,因为我们可以直接在我们的视图页面中注入服务并将所有结果绑定到我们的视图页面。 为了在我们的视图中注入服务,这里我们将使用我们现有的来自 Home >> *Index.cshtml* 的视图页面。
在“*Index.cshtml*”中,我们注入我们的 StudentService
并将所有结果绑定到表内部。
@inject ASPNETCOREDependencyInjection.Services.StudentService student
@if (student.GetAllStudentDetails().Any())
{
<table class='table' style="background-color:#FFFFFF; border:2px#6D7B8D;
padding:5px;width:99%;table-layout:fixed;" cellpadding="2" cellspacing="2">
<tr style="height: 30px; background-color:#336699 ;
color:#FFFFFF ;border: solid1px#659EC7;">
<td align="center">
Student Name
</td>
<td align="center">
Subject 1
</td>
<td align="center">
Subject 2
</td>
<td align="center">
Subject 3
</td>
<td align="center">
Subject 4
</td>
<td align="center">
Subject 5
</td>
<td align="center">
Grade
</td>
</tr>
@foreach (var std in student.GetAllStudentDetails().OrderBy(x => x.studentName))
{
<tr>
<td align="center" style="border: solid1px#659EC7; padding: 5px;table-layout:fixed;">
<span style="color:#9F000F">
@std.studentName
</span>
</td>
<td align="center" style="border: solid1px#659EC7; padding: 5px;table-layout:fixed;">
<span style="color:#9F000F">
@std.Subject1
</span>
</td>
<td align="center" style="border: solid1px#659EC7; padding: 5px;table-layout:fixed;">
<span style="color:#9F000F">
@std.Subject2
</span>
</td>
<td align="center" style="border: solid1px#659EC7; padding: 5px;table-layout:fixed;">
<span style="color:#9F000F">
@std.Subject3
</span>
</td>
<td align="center" style="border: solid1px#659EC7; padding: 5px;table-layout:fixed;">
<span style="color:#9F000F">
@std.Subject4
</span>
</td>
<td align="center" style="border: solid1px#659EC7; padding: 5px;table-layout:fixed;">
<span style="color:#9F000F">
@std.Subject5
</span>
</td>
<td align="center" style="border: solid1px#659EC7; padding: 5px;table-layout:fixed;">
<span style="color:#9F000F">
@std.Grade
</span>
</td>
</tr>
}
</table>
}
步骤 6 – 构建并运行项目
构建并运行项目,我们可以看到我们所有的 student
详细信息将显示在我们的主页上。
关注点
我们可以清楚地看到,现在 ASP.NET Core 使我们的工作量更加简单和容易,可以使用依赖注入直接在我们的视图页面中注入并绑定结果。
历史
- 2018 年 2 月 15 日:初始版本