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

  • 相关阅读:
    用户控件JS问题
    jQuery formValidator自定义函数扩展功能
    IAR使用notice
    C++入门学习
    解决Myeclipse闪退问题
    Cortex_M3——存储器系统学习笔记
    加密算法中涉及C/C++总结
    学习笔记——应用密码学基础
    keil软件相关问题汇总
    STM32知识点纪要
  • 原文地址:https://www.cnblogs.com/wangyulong/p/6688069.html
Copyright © 2011-2022 走看看