ASP.NET Core 支持在试图中使用依赖注入。这将有助于提供视图专用的服务,比如本地化或者仅用于填充视图元素的数据。应尽量保持控制器和视图之间的关注点分离。视图所显示的大部分数据应该从控制器传入。

  使用 @inject 指令将服务注入到视图,语法 @inject <type> <name>,例如:

@model MVCTest.Models.Operation
@using MVCTest.Services
@inject BaseInfoServices BaseInfoServices@{ViewData["Title"] = "Create";
}
<ul>@foreach (var city in BaseInfoServices.GetCities()){<li>@city</li>}
</ul>

    public class BaseInfoServices{public List<string> GetCities(){return new List<string>();}}

  需要提前在 ConfigureServices 中配置,将该服务加入到容器。

  1.填充查找数据

  视图注入有助于填充 UI 元素,例如下拉框列表。比如一个包括性别,州以及其他用户资料的表单。如果通过标准的 MVC 方式渲染这个表单,则需要控制器为每一组选项都请求数据访问服务,然后将每一组绑定的选项填充到模型或ViewBag中。

  另一种则是直接将服务注入到视图中以获取这些选项数据。这种方法将控制器代码量减少到最少,把构造视图元素的逻辑移到视图本身去。控制器 Action 只需把用户资料数据传个表单即可。

  

  2.重写服务

  除了注入服务外,此技术还可用于重写页面上先前注入的服务。例如,替换默认的HTML Helper:

@model MVCTest.Models.Operation
@using MVCTest.Services
@inject BaseInfoServices BaseInfoServices
@inject MyHtmlHelper Html

  在视图中使用 @Html 将会调用自定义的服务。

  如果想要扩展现有服务而不是替换,则只需在使用此技术的同时,让服务继承或者封装已有实现即可。

转载于:https://www.cnblogs.com/afei-24/p/11366373.html

ASP.NET Core MVC 之依赖注入 View相关推荐

  1. ASP.NET Core MVC 之依赖注入 Controller

    ASP.NET Core MVC 控制器应通过构造函数明确地请求它们地依赖关系,在某些情况下,单个控制器地操作可能需要一个服务,在控制器级别上的请求可能没有意义.在这种情况下,也可以将服务作为  Ac ...

  2. ASP.NET Core 中的依赖注入

    什么是依赖注入 软件设计原则中有一个依赖倒置原则(DIP),为了更好的解耦,讲究要依赖于抽象,不要依赖于具体.而控制反转(Ioc)就是这样的原则的其中一个实现思路, 这个思路的其中一种实现方式就是依赖 ...

  3. ASP.NET Core中的依赖注入(4): 构造函数的选择与服务生命周期管理

    ServiceProvider最终提供的服务实例都是根据对应的ServiceDescriptor创建的,对于一个具体的ServiceDescriptor对象来说,如果它的ImplementationI ...

  4. ASP.NET Core 2.0 依赖注入

    问题 如何使用 ASP.NET Core 服务容器进行依赖注入? 答案 创建一个服务 public interface IGreetingService { string Greet(string t ...

  5. ASP.NET Core中的依赖注入(2):依赖注入(DI)

    IoC主要体现了这样一种设计思想:通过将一组通用流程的控制从应用转移到框架之中以实现对流程的复用,同时采用"好莱坞原则"是应用程序以被动的方式实现对流程的定制.我们可以采用若干设计 ...

  6. ASP.NET Core 下的依赖注入(一)

    本文介绍利用 Microsoft.Extensions.Configuration.Binder.dll 来实现超级简单的注入. 1. appsettings.json 中定义配置 假设我们有如下配置 ...

  7. 用ASP.NET Core MVC 和 EF Core 构建Web应用 (一)

    系统必备 .NET Core 2.0.0 SDK 或更高版本. 已安装 ASP.NET 和 Web 开发工作负载的 Visual Studio 2017 15.3 版或更高版本. 创建Web应用程序 ...

  8. winform防止sqlserver注入_ASP.NET Core 中的 依赖注入介绍

    ASP.NET Core 依赖注入 HomeController public class HomeController : Controller { private IStudentReposito ...

  9. ASP.NET CORE MVC 2.0 如何在Filter中使用依赖注入来读取AppSettings

    问: ASP.NET CORE MVC 如何在Filter中使用依赖注入来读取AppSettings 答: Dependency injection is possible in filters as ...

最新文章

  1. linux mysql 5.7.12_Linux环境mysql5.7.12安装教程
  2. zookeeper: zkServer.sh status没有到主机的路由
  3. 深度学习应用实战案例-员工流失预测模型(Python源代码)
  4. mysql 主从 now_MySql主从复制搭建方法
  5. YII框架截取字符串长度
  6. C 语言实例 - 删除字符串中的特殊字符
  7. 4G江湖大战全面开启 移动4G用户数突破9000万
  8. Atitit 机器可读护照的Machine-readable passport 规范与解析格式 目录 1. 术语 1 1.1. machine-readable zone(MRZ) 1 1.2.
  9. 2020最新的黑马Java分享,包含课件,资料,项目,教程全部免费分享,需要的赶紧去收藏吧
  10. AM5728-Uboot SPL 代码走读
  11. 数据分析(1):对比分析法
  12. Saber 2016安装过程分享
  13. 【PCB专题】PCB板卡上的UL标识是什么?
  14. 【日常折腾】Y7000P触控板失灵这件事
  15. 支持移动触摸设备的简洁js幻灯片插件
  16. MTK androiod5.1源码精简系统APP
  17. 16代表啥_形势严峻下的医药代表如何不被淘汰
  18. Indigenous students at U of T honoured for efforts in language revitalization, health equity
  19. Java 工程师成神之路 | 2019正式版 1
  20. sql上一个月和下一个月

热门文章

  1. HH SaaS电商系统的销售订单毛利润设计
  2. 接口入口在什么地方_弱电工程施工图审查要点?有哪些地方需要审核?审核要求是什么?...
  3. git gui 历史版本_这些Git命令都不会,还是不要去面试了
  4. C语言内存/指针相关
  5. 用c语言产生大素数,C语言实现寻找大素数
  6. oracle添加表的索引,oracle批量添加指定表前缀的索引SQL语句
  7. 【渝粤教育】国家开放大学2018年秋季 8038-22T实用管理基础 参考试题
  8. 【渝粤教育】21秋期末考试马克思主义基本原理概论(A)10882k1 (2)
  9. 【渝粤题库】陕西师范大学200651线性代数 作业(高起专、高起本)
  10. prove, verify, bear out, demonstrate, confirm, validate, testify, certify 的区别