zoukankan      html  css  js  c++  java
  • 关于TagHelper的那些事情——TagHelper的基本知识

    概要

    TagHelper是ASP.NET 5的一个新特性。也许在你还没有听说过它的时候, 它已经在技术人员之间引起了大量讨论,甚至有一部分称它为服务器控件的回归。实际上它只不过是一个简化版本,把HTML和服务器内容混合在一起,没有控件生命周期,状态保持和事件。它不像服务器控件那样,对页面所有内容都具有访问权限。它只能访问到自己所生成的内容。

    什么是TagHelper?

    我们曾经在MVC项目中使用在HtmlHelps。比如当需要在View上添加一个导航栏的时候,我们就会添加下面代码到页面上去: 

    <ol>
    …
    <li>@Html.ActionLink("Home", "Index", "Home")<li>
    …
    </ol>
    

    这里有一些HTML元素。还有以@开头的一些C#代码,当View解析的时候这些C#代码会被解析成HTML元素。

    当我们用TagHelper,我们同样可以用下面的代码来获得上面同样的效果:

    <ol>
    …
    <li><a controller="Home" action="Index">Home</a></li>
    …
    </ol>
    

    在这里,A元素的属性controller和action并不是HTML5的属性,而是这个TagHelper的属性。

    这里需要着重申明一点是,虽然TagHelper看起来有点像我们之前服务器控件的写法,但是它不是服务器控件的再次回归。它更像是给用户一个简洁的方式来表达用户的意向。它本身并没有生命周期之类的东西。它会预处理服务器内容,然后赋值给相应的属性。我们来看一下关于微软提供的SelectTagHelper的一个用法:

    <select asp-for="Country" asp-items="ViewBag.Countries">
    

    其中文本“Country”被赋给asp-for属性,变量ViewBag.Countries被赋给属性asp-items.

    怎么使用TagHelpers?

    关于如何使用TagHelpers,我们可以参照一下几步:

    1. 在project.json文件中添加具有TagHelpers的package的依赖;
    2. 在所用的View上注册TagHelper:
      @addTagHelper “[the full type name of taghelper,] the assembly name”
      

      第一参数是TagHelper类的全名,当你只需要使用某一个TagHelper时候,你可以在此指定你所用的TagHelper类全名,包括它的NameSpace。如果你要使用程序集中所有的TagHelpers,在这里你可以使用“*”或者省略这一个参数。举个例子,如果你需要使用微软提供的TagHelpers可以通过添加下面的代码在注册:

      @addTagHelper "*, Microsoft.AspNet.Mvc.TagHelpers" 
      

      或者

      @addTagHelper "Microsoft.AspNet.Mvc.TagHelpers"
      

      如果你只希望使用AnchorTagHelper,那么只需要一下代码:

      @addTagHelper "Microsoft.AspNet.Mvc.TagHelpers.AnchorTagHelper, Microsoft.AspNet.Mvc.TagHelpers"
      

      第二个参数是程序集名。
      当然,如果你想取消某个TagHelper的注册,可以使用removeTagHelper,比如

      @removeTagHelper "Microsoft.AspNet.Mvc.TagHelpers.AnchorTagHelper, Microsoft.AspNet.Mvc.TagHelpers"
      

      一旦TagHelper被取消注册了,其对应的Tag就不能被解析成这种TagHelper了。

    3. 在View中需要使用的地方添加TagHelper,比如我们添加一个AnchorTagHelper:
      <a asp-controller="Home" asp-action="About">About</a> 

    写在本文的结尾

    以上介绍了TagHelper的一些基本知识,这是知识是基于ASP.NET5 beta4的,ASP.NET5还在开发之中,现在已经发布了beta5,有些东西也是一直在变化,所以可能上面写到的某些方法名,程序集名在新的版本都发生了变化,这一点需要注意。

    接下来我会介绍关于微软已经给我们提供的一些TagHelpers和如何开发自己的TagHelper。

  • 相关阅读:
    关于键盘事件对象code值
    解决父元素定位后宽度不随着子元素增大而增大的问题
    绝对定位后元素的宽高如果用百分比表示的计算方法
    4.7做作业时发现,内联元素设置宽高背景以后正常不显示,但是设置了position:absolute;以后就可以显示了。起到了和display:block;一样的效果。然后查了一下知道了。
    react-native中显示本地照片或视频
    用js实现div元素的拖拽、
    TCP协议浅谈
    TCP的三次握手和四次挥手
    TCP协议
    关于this指向的一点小分享
  • 原文地址:https://www.cnblogs.com/liontone/p/4638109.html
Copyright © 2011-2022 走看看