我的编程空间,编程开发者的网络收藏夹
学习永远不晚

如何在ASP.NET Core中使用ViewComponent

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

如何在ASP.NET Core中使用ViewComponent

前言

在之前的开发过程中,我们对于应用或者说使用一些小的组件,通常使用分布页(partial view),再往前在Web Form中我们会进行应用WEB Control,好吧提及一个关键性代码TagPrefix:TagName,通过这种的标记我们便可以在我们web form中进行引入我们的组件,当然自从.NET MVC之后呢,就已经没有了WebControl,而对于.NET Core后,又多了一个特性ViewComponent

对于ViewComponent看起来它类似于小的控制器,而对于我们小的组件或者小部分通用型功能,可通过ViewComponent进行实现,比如说留言栏、菜单等等。

ViewComponent是由两部分组成,一部分是类(通常该类集成与ViewComponent),而另外一部分是视图(Razor和普通的View一样),当然ViewComponent同样也支持POCO,不继承ViewComponent,但类名以ViewComponent结尾。

自定义一个组件

创建ViewComponent的方式有三种,如下所示:

  • 继承自ViewComponent
  • 使用ViewComponent特性
  • 创建一个类,以ViewComponent结尾

需要注意的是View Component必须是公共的(public),非嵌套,非抽象类。

对于View Component我们有了一个基本的认识,下面的话创建一个ButtonViewComponent示例,作为我们的参考:


using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;

namespace ViewComponentDemo.ViewComponents
{
    public class ButtonViewComponent : ViewComponent
    {
        public async Task<IViewComponentResult> InvokeAsync()
        {
            return View();
        }
    }
}

在视图页面中调用该组件:


@await Component.InvokeAsync("Button")

对于ViewComponent同样也是跟Controller一样,进行通过我们服务端特性进行视图操作,再或者说渲染,比如下面我们要传递参数,进行修改我们的Button的样式:

我们修改一下原方法,同时增加一个Enum类型,进行样式的选择


@await Component.InvokeAsync("Button",ButtonType.Success)

 public async Task<IViewComponentResult> InvokeAsync(ButtonType type = ButtonType.Success)
 {
        ViewBag.Type = type;
        //return View("name",model);//允许强类型
        return View();
 }
 
    public enum ButtonType
    {
        Default,
        Primary,
        Success,
        Info,
        Warning,
        Danger,
        Link
    }

ViewComponent特性

因为在我们的视图关系绑定中,我们更多的是依赖于命名式绑定,而当我们组件的命名与类命名不一致时,会导致我们搜索不到相关的视图,当然我们可能会在使用过程中对其应用不一样的Name,而对于这种情况,我们可以使用ViewCompoentAttribute
进行标记,通过这种方式我们可进行视图的绑定,如下所示:


    [ViewComponent(Name ="Button")]
    public class ButtonTest : ViewComponent
    {
        public async Task<IViewComponentResult> InvokeAsync(ButtonType type = ButtonType.Success)
        {
            ViewBag.Type = type;
            return View();
        }
    }

如上代码虽然ButtonTest的命名引发了视图绑定失败(不能进行使用Button),而我们将其加入一个标记,将Name命名为Button这样弥补了我们命名的不一致行为。

Taghelper方式

通过@addTagHelper指定进行注册包含组件的程序集,组件位于ViewComponentDemo程序集中


@addTagHelper *, ViewComponentDemo

切记这种方式有一个弊端,参数不是可选性参数,也就是你必须把每一个参数都进行显示的调用一下,否则将导致搜索不到.


<vc:button type="@ButtonType.Success"></vc:button>

在如上代码中type为我们的方法参数。

Reference

Demo:https://github.com/hueifeng/BlogSample/tree/master/class="lazy" data-src/ViewComponentDemo

以上就是如何在ASP.NET Core中使用ViewComponent的详细内容,更多关于ASP.NET Core中使用ViewComponent的资料请关注编程网其它相关文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

如何在ASP.NET Core中使用ViewComponent

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Serilog如何在ASP.Net Core中使用

本篇文章为大家展示了Serilog如何在ASP.Net Core中使用,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。安装 Serilog使用 Visual Studio 新建 ASP.Net Cor
2023-06-14

如何在Asp.Net Core中使用Refit

本篇文章给大家分享的是有关如何在Asp.Net Core中使用Refit,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。ASP.NET 是什么ASP.NET 是开源,跨平台,高性
2023-06-07

如何在ASP.Net Core应用程序中使用Bootstrap4

本篇内容介绍了“如何在ASP.Net Core应用程序中使用Bootstrap4”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!笔者的前端文件
2023-06-26

ASP.NET Core中间件如何使用

今天小编给大家分享一下ASP.NET Core中间件如何使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1.前言整个HTT
2023-06-29

详解如何在ASP.NET Core中使用Route特性

ASP.NET Core 中的 Route 中间件的职责在于将 request 匹配到各自 Route 处理程序上,Route 分两种:基于约定 和 基本特性 模式。 基于约定 模式的Route采用集中化的方式,而 基于特性 的方式允许你
2022-06-07

怎样在ASP.NET Core中使用HttpClientFactory

本篇内容主要讲解“怎样在ASP.NET Core中使用HttpClientFactory”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎样在ASP.NET Core中使用HttpClientFa
2023-06-14

如何在ASP.NET Core中使用Session的示例代码

ASP.NET Core 是一个跨平台,开源的,轻量级,高性能 并且 高度模块化的web框架,Session 可以实现用户信息存储从而可以在同一个客户端的多次请求之间实现用户追踪,在 ASP.Net Core 中可以使用 Microsoft
2022-06-07

ASP.NET Core如何使用HttpClient调用WebService

本文小编为大家详细介绍“ASP.NET Core如何使用HttpClient调用WebService”,内容详细,步骤清晰,细节处理妥当,希望这篇“ASP.NET Core如何使用HttpClient调用WebService”文章能帮助大家
2023-06-29

Lamar怎么在ASP.Net Core项目中使用

这篇文章将为大家详细讲解有关Lamar怎么在ASP.Net Core项目中使用,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。为什么要用 Lamar 实现依赖注入要说 .NET 世界最早的依赖
2023-06-13

ASP.NET Core MVC中如何使用Tag Helper组件

这篇文章主要介绍ASP.NET Core MVC中如何使用Tag Helper组件,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Tag Helper 组件 - 简介在 ASP.NET Core 2 还为我们带来了一个
2023-06-29

如何使用VS2022在ASP.NET Core中构建轻量级服务

小编给大家分享一下如何使用VS2022在ASP.NET Core中构建轻量级服务,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!在 ASP.NET Core 中处理
2023-06-21

ASP.NET Core中如何使用EF创建模型

本文小编为大家详细介绍“ASP.NET Core中如何使用EF创建模型”,内容详细,步骤清晰,细节处理妥当,希望这篇“ASP.NET Core中如何使用EF创建模型”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。1
2023-06-29

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录