最近一直在学习.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. 图形化代码阅读工具——Scitools Understand

    Scitools出品的Understand 2.0.用了很多年了,比Source Insight强大很多.以前的名字叫Understand for C/C++,Understand for Java, ...

  2. html细节积累-01

    语义错误 块级元素可以包含内联元素和某些块级元素,内联元素不能包含块级元素,只能包含内联元素 页面可能正常解析,但不符合语义.浏览器自带容错机制,对于不规范的写法也能够正确解析,各浏览器的容错机制不同 ...

  3. PTVS在Visual Studio中的安装

    下载链接,点这里 PTVS是VS下的python开发插件 1.下载完成后,双击运行,安装完毕 2.解释脚本:打开VS,找到文件-新建-项目,在新建项目页面的左侧树形菜单的已安装->模板-> ...

  4. 基于AGS JS开发自定义贴图图层

    文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1.前言 假设一个景区有多张图片需要在地图上展示,并且随着地图的缩放而缩 ...

  5. gitignore文件中添加新过滤文件,但是此文件已经提交,如何解决?

    gitignore文件中添加新过滤文件,但是此文件已经提交到远程库,如何解决? 第一步,为避免冲突需要先同步下远程仓库 git pull 第二步,在本地项目目录下删除缓存 git rm -r --ca ...

  6. Tcl与Design Compiler (六)——基本的时序路径约束

    本文属于原创手打(有参考文献),如果有错,欢迎留言更正:此外,转载请标明出处 http://www.cnblogs.com/IClearner/  ,作者:IC_learner 时序约束可以很复杂,这 ...

  7. MCMC(四)Gibbs采样

    MCMC(一)蒙特卡罗方法 MCMC(二)马尔科夫链 MCMC(三)MCMC采样和M-H采样 MCMC(四)Gibbs采样 在MCMC(三)MCMC采样和M-H采样中,我们讲到了M-H采样已经可以很好 ...

  8. Linux网络那点事

    跨平台系列汇总:http://www.cnblogs.com/dunitian/p/4822808.html#linux 之前的之前说过网络自连接的配置(CentOS服务器网络配置:http://ww ...

  9. [SinGuLaRiTy] 2017-03-27 综合性测试

    [SinGuLaRiTy-1013] Copyright (c) SinGuLaRiTy 2017. All Rights Reserved. 这是 三道 USACO 的题...... 第一题:奶牛飞 ...

  10. Access-自定义控件TabControl

    p{ font-size: 15px; } .alexrootdiv>div{ background: #eeeeee; border: 1px solid #aaa; width: 99%; ...