zoukankan      html  css  js  c++  java
  • ASP.NET Core MVC 之依赖注入 View

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

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

  • 相关阅读:
    剑指offer---第一个只出现一次的字符
    剑指offer---两个链表的第一个公共结点
    剑指offer---丑数
    剑指offer---旋转数组的最小数字
    剑指offer---滑动窗口的最大值
    剑指offer---重建二叉树
    剑指offer---数据流中的中位数
    剑指offer---二叉搜索树的第K个节点
    剑指offer--对称二叉树
    剑指offer---把二叉树打印成多行
  • 原文地址:https://www.cnblogs.com/afei-24/p/11366373.html
Copyright © 2011-2022 走看看