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 将会调用自定义的服务。

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

最新文章

  1. DOM事件类型详解
  2. Rem实现自适应初体验
  3. 使用appscan实现多站扫描简单自动化
  4. 青瓷qici - H5小游戏 抽奖机 1 素材
  5. canvas.js | CLiPS
  6. linux重要的标准目录和文件
  7. opencv保存视频
  8. 在C#中使用C++编写的类1
  9. 日期格式化{0:yyyy-MM-dd HH:mm:ss.fff}和{0:yyyy-MM-dd hh:mm:ss.fff}的区别
  10. Mybatis-多对多
  11. LANMP On CentOS 6
  12. angularJs学习笔记-路由
  13. Azure系列2.1.3 —— BlobEncryptionPolicy
  14. 转载---滋滋有味看完的一篇文章关于python与java夜话
  15. LoadRunner通过SiteScope监控MySQL的性能
  16. day22 Pythonpython 本文json模块
  17. Git -- 基本操作 之 版本回退
  18. 我的border能自定义四角之border-radius : 左上角,右上角,左下角,右下角。
  19. Windbg and resources leaks in .NET applications 资源汇总
  20. qemu-nbd方式挂载qcow2镜像

热门文章

  1. java基础第十六篇之多线程
  2. 黑马程序员面试宝典(Java)Beta6.0免费下载
  3. springboot服务的一些问题
  4. openpyxl的简单使用
  5. JVM的内存结构以及性能调优
  6. day71_10_16多表断关联
  7. mask-rcnn环境配置windows
  8. 第六章 HTTP首部
  9. MNIST-神经网络的经典实践
  10. Docker相关安装和卸载