怎么在ASP。网络核心中注入框架依赖

  介绍

怎么在ASP。网络核心中注入框架依赖?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

<强> 1,ASP。网络中核心的依赖注入

此示例展示了框架级依赖注入如何在ASP。网络核心中工作。其简单但功能强大,足以完成大部分的依赖注入工作。框架级依赖注入支持以下范围:

<李>

单-总是返回相同的实例

<李>

瞬态——每次都返回新的实例

<李>

范围——在当前(请求)范围内返回相同的实例

假设我们有两个要通过依赖注入来进行工作的工件:

<李>

PageContext -自定义请求上下文

<李>

设置-全局应用程序设置

这两个都是非常简单的类.PageContext类为布局页面提供当前页面标题的标题标签。

public  class  Settings    {   ,public  string  SiteName;   ,public  string  ConnectionString;   }   public  class  PageContext   {   private 才能readonly  Settings  _settings;   public 才能;PageContext (Settings 设置)   {才能   ,,,_settings =,设置;   ,,}   public 才能;string  PageTitle;   public 才能;string  FullTitle   {才能   ,才能得到   ,,,{   ,,,,,var  title =, (PageTitle  ? ?,““) .Trim (),,   ,,,,,如果(! string.IsNullOrWhiteSpace(标题),,,   ,,,,,,,! string.IsNullOrWhiteSpace (_settings.SiteName))   ,,,,,{   ,,,,,,,title  +=,,, |,“;   ,,,,,}   ,,,,,title  +=, _settings.SiteName.Trim ();   ,,,,,return 标题;   ,,,}   ,,}   }

<强> 2,注册依赖

在UI构建块中使用这些类之前,需要在应用程序启动时注册这些类。该工作可以在创业类的ConfigureServices()方法中完成。

public  void  ConfigureServices (IServiceCollection 服务)   {   services.AddMvc才能();   var 才能;settings =, new 设置();   时间=settings.SiteName 才能;配置(“SiteName");   services.AddSingleton才能(设置);   services.AddScoped<才能;PageContext> ();   }

现在可以将这些类注入到支持依赖注入的控制器和其他UI组件中。

<强> 3,向控制器注入实例

我们通过家控制器中的PageContext类分配页面标题。

public  class  HomeController :控制器   {   private 才能readonly  PageContext  _pageContext;   public 才能;HomeController (PageContext  pageContext)   {才能   ,,,_pageContext =, pageContext;   ,,}   public 才能;IActionResult 指数()   {才能   ,,,_pageContext.PageTitle =,““   ,,,return 视图();   ,,}   public 才能;IActionResult 约()   {才能   ,,,_pageContext.PageTitle =,“About";   ,,,return 视图();   ,,}   public 才能;IActionResult 错误()   {才能   ,,,_pageContext.PageTitle =,“Error";   ,   ,,,return 视图();   ,,}   }

这种分配页面标题的方式不错,因为我们不必使用视讯系统,这样更容易受支持多语言应用程序支持。

<强> 4,向视图注入实例

现在控制器的行动中分配了页面标题,是时候在布局页面中使用标题了。我在页面的内容区域添加了标题,所以在tech.io环境中也很容易看到。为了能在布局页面中使用到PageContext,我使用了视图注入(下面代码片段中的第一行)。

@inject  PageContext  PageContext   & lt; ! DOCTYPE  html>   & lt; html>   & lt; head>   & lt;才能meta  charset=皍tf-8",/比;   & lt;才能meta  name=皏iewport",内容=翱矶?设备宽度,初始=1.0“,/比;   & lt;才能title> @pageContext.FullTitle   & lt;才能environment 名称=癉evelopment"比;   ,,,& lt; link  rel=皊tylesheet" https://www.yisu.com/zixun/, href=" ~/lib/引导/dist/css/bootstrap.css”rel="外部nofollow "/>         <环境名称=胺制凇⑸?      

怎么在ASP。网络核心中注入框架依赖