最近一直在学习.net core 上周六开始学习Taghelper的自定义,准备周日写个博客和大家分享一下学习体会,无奈周日去考科四了,回来之后就感冒了,现在还没好。可是我发现了微软官方文档的一个错误,觉得立马要和大家分享出来,免得后边的人和我走一样的弯路

首先这是微软官网关于TagHelper的自定义使用说明链接https://docs.microsoft.com/en-us/aspnet/core/mvc/views/tag-helpers/authoring 无奈我的英语水平不太好,勉强还能看懂。

在这一章  Passing a model to a Tag Helper 的说明中

    首先声明了Models 文件夹下声明一个类

   public class WebsiteContext
     {
         public Version Version { get; set; }
         public int CopyrightYear { get; set; }
         public bool Approved { get; set; }
         public int TagsToShow { get; set; }
     }

    接下来他的自定义TagHelper要使用这个类

   public class WebsiteInformationTagHelper : TagHelper
     {
         public WebsiteContext Info { get; set; }

       public override void Process(TagHelperContext context, TagHelperOutput output)
       {
          output.TagName = "section";
          output.Content.SetHtmlContent(
 $@"<ul><li><strong>Version:</strong> {Info.Version}</li>
 <li><strong>Copyright Year:</strong> {Info.CopyrightYear}</li>
 <li><strong>Approved:</strong> {Info.Approved}</li>
 <li><strong>Number of tags to show:</strong> {Info.TagsToShow}</li></ul>");
          output.TagMode = TagMode.StartTagAndEndTag;
       }
    }

    在接下来在前台他要是用这个TagHelper

 @using AuthoringTagHelpers.Models
 @{
     ViewData["Title"] = "About";
 }
 <h2>@ViewData["Title"].</h2>
 <h3>@ViewData["Message"]</h3>

 <p bold>Use this area to provide additional information.</p>

 <bold> Is this bold?</bold>

 <h3> web site info </h3>
 <website-information info="new WebsiteContext {
                                     Version = , ),
                                     CopyrightYear = ,
                                     Approved = true,
                                     TagsToShow =  }" />

   这个就是他的使用过程

如果 按照他的说明这样做完之后你会发现根本不行,浏览器报错  错误很明显 无法将Version类型转化为String类型

好了这里改一下

<Website-Information info="new WebSiteContext {

                                  Version = new string('1', 3),
                                    CopyrightYear = ,
                                    Approved = true,
                                    TagsToShow =  }" ></Website-Information>

这会测试的时候改完之后就可以直接运行了。原来在改之前还会出现一个错误。  <Website-Information info="......"></Website-Information>会报出无法识别 info这个属性, 给大家分析一下 首先Website-Information这个Tag是原本都没有的,是我们自己定义的。所以它本身也就不存在什么属性,而这里直接使用它的info属性。它肯定无法识别,所以在这里我们需要对其自定义的时候加上这个属性,让编译器能够识别 。

public class WebsiteInfomationTagHelper : TagHelper
    {
        public WebSiteContext Info { get; set; }
        public override void Process(TagHelperContext context, TagHelperOutput output)
        {

            output.TagName = "section";
            //如果说添加的属性不存在用add方法
            output.Attributes.Add("info", Info);
            //添加的属性存在则用setAttribute方法
            //output.Attributes.SetAttribute("info", info);
            output.Content.SetHtmlContent(
                $@"<ul><li><strong>Version:</strong> {Info.Version}</li>
<li><strong>Copyright Year:</strong> {Info.CopyrightYear}</li>
<li><strong>Approved:</strong> {Info.Approved}</li>
<li><strong>Number of tags to show:</strong> {Info.TagsToShow}</li></ul>"
                );
            output.TagMode=TagMode.StartTagAndEndTag;

        }
    }

    这样进行一番修改之后就可以运行了 这是运行的结果

    可能本人才疏学浅。毕竟刚开始学没两天。有什么问题欢迎在评论区评论。我会第一时间进行回复。希望大家一起帮助一起成长。

TagHelper的一些个人学习体会(发现了微软官方文档的一个错误)的更多相关文章

  1. 发现Boost官方文档的一处错误(numpy的ndarray)

    文档位置:https://www.boost.org/doc/libs/1_65_1/libs/python/doc/html/numpy/tutorial/ndarray.html shape在这里 ...

  2. Java学习全攻略-->阅读官方文档

    一直感觉Java的官方文档有些杂乱,最近特意整理了一下,仅供参考. 入口 Oracle官方文档入口:http://docs.oracle.com/.下级页面这边只整理了JavaEE跟JavaSE的文档 ...

  3. urllib2模块中文翻译与学习 - Python 2.7.8官方文档

    总结 目的 打开指定网址 要求 了解需要处理的网站的操作流程 数据包的构造与提交 对可能的响应处理选择合适的处理器(模块内的各种 *Handler()) 核心 urllib.urlencode(que ...

  4. Adaptive AUTOSAR 学习笔记 2 - 官方文档下载及阅读建议

    目前互联网上没有太多的 Adaptive AUTOSAR 的学习资料,官方文档是一个很不错的途径.看过官方文档才发现,目前很多关于 Adaptive AUTOSAR 的文章都是官方文档的简化翻译,不如 ...

  5. Spring Framework 官方文档学习(四)之Validation、Data Binding、Type Conversion

    本篇太乱,请移步: Spring Framework 官方文档学习(四)之Validation.Data Binding.Type Conversion(一) 写了删删了写,反复几次,对自己的描述很不 ...

  6. Spring 4 官方文档学习(十二)View技术

    关键词:view technology.template.template engine.markup.内容较多,按需查用即可. 介绍 Thymeleaf Groovy Markup Template ...

  7. Spring 4 官方文档学习(十一)Web MVC 框架之配置Spring MVC

    内容列表: 启用MVC Java config 或 MVC XML namespace 修改已提供的配置 类型转换和格式化 校验 拦截器 内容协商 View Controllers View Reso ...

  8. Swift -- 官方文档Swift-Guides的学习笔记

    在经历的一段时间的郁闷之后,我发现感情都是虚伪的,只有代码是真实的(呸) 因为看了swift语法之后依然不会用swift,然后我非常作死的跑去看官方文档,就是xcode里自带的help>docu ...

  9. 照着官方文档学习react

    笨人学习法 10000个小时策略来学习,因为笨.先照着官方文档敲一遍,写一遍. 准备 先要准备环境.搭建一个基于webpack的react环境:Hello ReactJS. demo: https:/ ...

随机推荐

  1. casperjs环境安装

    1.python 环境安装 2.PhantomJs安装,戳这里,安装的1.9.8版本的,配置环境变量path:";C:\phantomjs"(注意:安装2.0.0版本,运行casp ...

  2. mui学习链接

    http://dev.dcloud.net.cn/mui/snippet/ http://www.bcty365.com/content-146-2453-1.html hbuilder转rem值: ...

  3. 【转】深入理解RunLoop

    RunLoop 是 iOS 和 OS X 开发中非常基础的一个概念,这篇文章将从 CFRunLoop 的源码入手,介绍 RunLoop 的概念以及底层实现原理.之后会介绍一下在 iOS 中,苹果是如何 ...

  4. Google分析language垃圾信息

    最近一段时间,我在Google Analytics(以下简称GA)中查看网站数据时,发现一个非常可疑的信息: 这什么鬼? "language"这一项一般是 "zh-tw& ...

  5. 关于php的flush在本机正常在服务器不灵的问题

    这个问题网上很多,我就不重复那些了. 我的是关于进度条的应用.我最后遇到的问题是,在本机swampserver环境下的输出缓存很快,但是到了服务器上就是一段一段的了.我的服务器是Web服务器是IIS. ...

  6. nodejs 使用mongoose 操作mongodb

    nodejs操作mongodb可以使用mongoose: Mongoose is a MongoDB object modeling tool designed to work in an async ...

  7. Android Weekly Notes Issue #250

    Android Weekly Issue #250 March 26th, 2017 Android Weekly Issue #250. 本期内容: 好几篇关于Android O预览版的文章; JU ...

  8. 利用NSURLSession下载视频,图片,能实现断点续传

    首先分析下载资源到本地,就得有URL ,点击btn ,就会解析网络地址,获取数据,就得有进度条控件 NSURLSession类的实现,通过委托代理模式去实现一些方法,需遵守<NSURLSessi ...

  9. javaweb浏览器随机输出一张验证码图片

    一.在web.xml中的配置如下: <?xml version="1.0" encoding="UTF-8"?><web-app xmlns: ...

  10. piwik安装部署最佳实践

    1.piwik介绍 Piwik是一个PHP和MySQL的开放源代码的Web统计软件,它给你一些关于你的网站的实用统计报告,比如网页浏览人数,访问最多的页面,搜索引擎关键词等等. Piwik拥有众多不同 ...