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。

  • 相关阅读:
    HDU 2089 不要62
    HDU 5038 Grade(分级)
    FZU 2105 Digits Count(位数计算)
    FZU 2218 Simple String Problem(简单字符串问题)
    FZU 2221 RunningMan(跑男)
    FZU 2216 The Longest Straight(最长直道)
    FZU 2212 Super Mobile Charger(超级充电宝)
    FZU 2219 StarCraft(星际争霸)
    FZU 2213 Common Tangents(公切线)
    FZU 2215 Simple Polynomial Problem(简单多项式问题)
  • 原文地址:https://www.cnblogs.com/liontone/p/4638109.html
Copyright © 2011-2022 走看看