最近一直在学习.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. AJAX同步和异步的区别

    function paginationGo(page){ sendata = {"page":page}; $.ajax({ type:"POST", url: ...

  2. Servlet中表单的重复提交

    1.用户登录页面: ->设置一个UUID到session中 ->将UUID添加到隐藏域中,提交到服务器 <% //进入页面,设置一个UUID,将UUID添加到session中 Str ...

  3. 3892: [Usaco2014 Dec]Marathon

    3892: [Usaco2014 Dec]Marathon Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 169  Solved: 100[Submi ...

  4. UI 基本控件使用

    一>UITextFiled  ———>UITextField是什么 UITextField ( 输入框 ) : 是控制文本输入和显示的控件.在APP中UITextField 出现频率很高 ...

  5. 关于wxpython多线程研究包括(import Publisher错误研究)

    作为一个自动化测试人员,开发基本的应用桌面程序是必须的!最近在研究wxpython相关知识,目前看到多线程一块,发现官方文档介绍说:"在线程中不能修改修改窗口属性!",但是实际情况 ...

  6. java-信息安全(四)-数据签名、数字证书

    概述 信息安全基本概念: 数字签名 数字证书 数字签名 数字签名(又称公钥数字签名.电子签章)是一种类似写在纸上的普通的物理签名,但是使用了公钥加密领域的技术实现,用于鉴别数字信息的方法.一套数字签名 ...

  7. C语言之一天一个小程序

    程序示例: #include <stdio.h> #include <stdlib.h> int main() { printf("Hello,world!\n&qu ...

  8. 解决MVC中JsonResult返回 弹出文件下载对话框

    设置一下返回类型为HTML TEXT就可以了 JsonResult json = Json(xxx, JsonRequestBehavior.DenyGet); json.ContentType = ...

  9. 【VB超简单入门】五、基本输出输入

    之前讲了VB IDE的基本操作和概念,接下来要开始将VB语言的编程了. 程序最重要的部分是输出和输入,输入数据,经过计算机处理,再输出结果.本文将介绍两种最基本的输出输入方法,分别是Print.Msg ...

  10. C++ Primer 5 CH6 函数

    6.1 函数基础 函数包括:返回类型.函数名字.形参.函数体. 通过 "调用运算符"(一对圆括号)来执行函数,它作用于一个表达式,该表达式是函数或者指向函数的指针. 函数调用完成两 ...