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

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

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

 [Activate]
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:

 public class MyController
{
[Activate]
public ActionContext ActionContext { get; set; } [Activate]
public HttpContext HttpContext { get; set; }
}

After:

 public class MyController
{
[ActionContext]
public ActionContext ActionContext { get; set; } public HttpContext HttpContext => ActionContext.HttpContext
}

POCO ViewComponent Sample

Before:

 public class MyViewComponent
{
[Activate]
public IRespository Repository { get; set; } [Activate]
public ViewContext ViewContext { get; set; }
}

After:

 public class MyViewComponent
{
public MyViewComponent(IRepository repository)
{
Repository = repository;
} public IRespository Repository { get; } [ViewComponentContext]
public ViewComponentContext ViewComponentContext { get; set; }
}

TagHelper Sample

Before:

 public class MyTagHelper : TagHelper
{
[HtmlAttributeNotBound]
[Activate]
public IHtmlEncoder Encoder { get; set; } [HtmlAttributeNotBound]
[Activate]
public ViewContext ViewContext { get; set; }
}

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

AspNet5 Changes to [Activate] in beta-5的更多相关文章

  1. [译] iOS 11.4.1 Beta:全新的USB限制模式

    (Source/原文链接 https://blog.elcomsoft.com/2018/06/ios-11-4-1-beta-usb-restricted-mode-has-arrived/) 作者 ...

  2. ASP.NET 5 Beta 8 发布

    ASP.NET 5 的路线图(详见 ASP.NET 5 Schedule and Roadmap : https://github.com/aspnet/home/wiki/roadmap ):Bet ...

  3. Ionic2系列-将beta升级到RC1

    国庆节前Ionic2发布了RC0版本,已经接近正式版了,前不久Angular2和TypeScript2也已经发布了正式版.详情请参考官方博客: http://blog.ionic.io/announc ...

  4. JuCheap V2.0响应式后台管理系统模板正式发布beta版本

    JuCheap V1.* 查看地址: http://blog.csdn.net/allenwdj/article/details/49155339 经过半年的努力,JuCheap后台通用响应式管理后台 ...

  5. Beta版本冲刺计划及安排

    经过紧张的Alpha阶段,很多组已经从完全不熟悉语言和环境,到现在能够实现初步的功能.下一阶段即将加快编码进度,完成系统功能.强化软件工程的体会.Beta阶段的冲刺时间为期七天,安排在2016.12. ...

  6. Beta阶段项目展示

    1.团队简介 韩青长 前端工程师 我是韩青长,技术小白,抱着对软工的好奇和对未来工作的憧憬选了这门课.暂时选择了测试的工作,也对开发和UI有一定兴趣.从前上帝创造了我们,现在轮到我们来创造自己的软件了 ...

  7. Beta阶段项目终审报告

    先上图 设想和目标 我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述? 我们的软件主要是用来解决玩狼人杀这款桌游时无牌.无法官.游戏流程不熟悉等情况的.我觉得我们对典型 ...

  8. Beta阶段第十次Scrum Meeting

    情况简述 BETA阶段第十次Scrum Meeting 敏捷开发起始时间 2017/1/4 00:00 敏捷开发终止时间 2017/1/5 00:00 会议基本内容摘要 deadline到来 参与讨论 ...

  9. Beta阶段第九次Scrum Meeting

    情况简述 BETA阶段第九次Scrum Meeting 敏捷开发起始时间 2017/1/2 00:00 敏捷开发终止时间 2017/1/3 00:00 会议基本内容摘要 deadline临近 参与讨论 ...

随机推荐

  1. Vuejs - 单文件组件

    为什么需要单文件组件 在之前的实例中,我们都是通过 Vue.component 或者 components 属性的方式来定义组件,这种方式在很多中小规模的项目中还好,但在复杂的项目中,下面这些缺点就非 ...

  2. linux c 执行新程序

    学习进程时,linu c上说新开的进程一般要执行另外一个程序,同时与父进程执行同一个程序没有意义 如下是如何执行一个新的程序 使用exec函数簇 exec函数簇包含如下函数

  3. [Leetcode Week16]Range Sum Query - Mutable

    Range Sum Query - Mutable 题解 原创文章,拒绝转载 题目来源:https://leetcode.com/problems/range-sum-query-mutable/de ...

  4. 一文看懂IC芯片生产流程:从设计到制造与封装

    http://blog.csdn.net/yazhouren/article/details/50810114 芯片制造的过程就如同用乐高盖房子一样,先有晶圆作为地基,再层层往上叠的芯片制造流程后,就 ...

  5. linux 命令行远程登录 后台运行命令的方法

    linux 命令行远程登录 后台运行命令的方法 http://blog.csdn.net/isuker/article/details/55061595 Linux 技巧:让进程在后台可靠运行的几种方 ...

  6. $scope作用及模块化解决全局问题

    $scope对象就是一个普通的JavaScript对象,我们可以在其上随意修改或添加属性.$scope对象在AngularJS中充当数据模型,但与传统的数据模型不一样,$scope并不负责处理和操作数 ...

  7. C后端设计开发 - 第4章-武技-常见轮子下三路

    正文 第4章-武技-常见轮子下三路 后记 如果有错误, 欢迎指正. 有好的补充, 和疑问欢迎交流, 一块提高. 在此谢谢大家了. Moonlight Shadow   纪念那个我爱的, 被我感动的女孩 ...

  8. 在 static table view 中增加date picker 并进行动态高度设定

    http://blog.apoorvmote.com/how-to-pop-up-datepicker-inside-static-cells/

  9. printf格式化输出

    基本格式 printf [format] [文本1] [文本2] .. 常用格式替换符 %s 字符串 %f 浮点格式 %c ASCII字符,即显示对应参数的第一个字符 %d,%i 十进制整数 %o 八 ...

  10. leetcode 之Gas Station(11)

    这题的思路很巧妙,用两个变量,一个变量衡量当前指针是否有效,一个衡量整个数组是否有解,需要好好体会. int gasStation(vector<int> &gas, vector ...