zoukankan      html  css  js  c++  java
  • AspNet5 Changes to [Activate] in beta-5

    最近在看AspNet Core相关的文章,其中有个TagHelper,看上善若水的博客“关于TagHelper的那些事”,其中有一句

    下面来自上善若水的博客原文:

    我们知道ASP.NET 5实现了依赖注入,在TagHelper类中我们也可以通过依赖注入获取更多的系统实例对象,为具体需求所有。我们只需要在TagHelper类中,添加一个相关类型的属性,然后在属性头上添加Activate属性即可自动获取对应实例。比如,获取ViewContext信息,可以在类中添加如下代码:

    1 [Activate]
    2 public ViewContext ViewContext { get; set; }

    这样我们就可以在其他地方,通过属性ViewContext获取当前View的上下文信息。

    通过这种方式,你可以获取到更多的系统实例对象,如ActionContextHttpContextHttpRequestHttpResponse、 ViewDataDictionary以及ActionBindingContext等。具体关于依赖注入的介绍见这里

    上面来自上善若水的博客原文。

    我查了半天资料找不到这个ActivateAttribute的命名空间。后来在bing上搜索找到了下面这篇文章

    https://github.com/aspnet/Announcements/issues/28

    Activate特性已经在beta-5中改变了

    POCO Controller Sample

    Before:

    1 public class MyController
    2 {
    3     [Activate]
    4     public ActionContext ActionContext { get; set; }
    5 
    6     [Activate]
    7     public HttpContext HttpContext { get; set; }
    8 }

    After:

    1 public class MyController
    2 {
    3     [ActionContext]
    4     public ActionContext ActionContext { get; set; }
    5 
    6     public HttpContext HttpContext => ActionContext.HttpContext
    7 }

    POCO ViewComponent Sample

    Before:

    1 public class MyViewComponent
    2 {
    3     [Activate]
    4     public IRespository Repository { get; set; }
    5 
    6     [Activate]
    7     public ViewContext ViewContext { get; set; }
    8 }

    After:

     1 public class MyViewComponent
     2 {
     3     public MyViewComponent(IRepository repository)
     4     {
     5         Repository = repository;
     6     }
     7 
     8     public IRespository Repository { get; }
     9 
    10     [ViewComponentContext]
    11     public ViewComponentContext ViewComponentContext { get; set; }
    12 }

    TagHelper Sample

    Before:

     1 public class MyTagHelper : TagHelper
     2 {
     3     [HtmlAttributeNotBound]
     4     [Activate]
     5     public IHtmlEncoder Encoder { get; set; }
     6 
     7     [HtmlAttributeNotBound]
     8     [Activate]
     9     public ViewContext ViewContext { get; set; }
    10 }

    After:

    public class MyTagHelper : TagHelper
    {
        public MyTagHelper(IHtmlEncoder encoder)
        {
            Encoder = encoder;
        }
    
        public IHtmlEncoder Encoder { get; }
    
        [HtmlAttributeNotBound]
        [ViewContext]
        public ViewContext ViewContext { get; set; }
    }

    上面只是几个例子,要想了解具体情况请参考:https://github.com/aspnet/Announcements

  • 相关阅读:
    GPS坐标转化距离(短距离模型公式)
    jquery ajax 同步异步的执行
    视频播放的基本原理
    [css或js控制图片自适应]
    asp.net中js和jquery调用ashx的不同方法分享,需要的朋友可以参考一下
    [转载]在网页中插入media,RealPlayer等控件
    数组的几种排序算法的实现(3)
    -- HTML标记大全参考手册[推荐]
    数组的几种排序算法的实现(2)
    数组的几种排序算法的实现(1)
  • 原文地址:https://www.cnblogs.com/wangyulong/p/6688069.html
Copyright © 2011-2022 走看看