refer : https://docs.microsoft.com/en-us/aspnet/core/mvc/views/view-components

core 和 Angular 的 component 是不同的.

core 的 component 只是对 partial view 的升级而已.

从前 partial view 只是一个 view 的封装, component 则是 controller + view 的封装

所以方便一些.

首先定义一个 class 继承 ViewComponent, component 的名字就是 class name, 当然我们也可以改它,

[Area("Web")]
[ViewComponent(Name = "keatkeat")] //修改 name
public class MyHeader : ViewComponent
{
private DB db { get; set; } public MyHeader(
DB db
)
{
this.db = db;
} public Task<IViewComponentResult> InvokeAsync(string value) //调用时可以传参哦, 好像不支持 optional and default value /.\
{
var vm = new ViewModel
{
name = value
};
return Task.FromResult<IViewComponentResult>(View(vm));
}
}

调用

@addTagHelper *, Project

@{ var value = "keatkeat87"; }
@await Component.InvokeAsync("keatkeat",value)
@await Component.InvokeAsync(nameof(Project.Web.ViewComponents.MyHeader.MyHeader),value)
<vc:keatkeat value="@value" ></vc:keatkeat>

上面有 3 种调用的方式

第一种是写入 component 名字

第二种是通过 nameof 找到 class, 如果你修改了名字, 那么这个调用是会坏掉的哦.

第三种是通过 element 模式 (需要在 _ViewImports.cshtml 添加 @addTagHelper *, Project,  Project 是我项目的名字, 直接放整个项目 assembly 就可以了)

ViewComponent 的模板和一般的 controller 查找不同, 一般的 controller View name 是 Index.cshtml

而 ViewComponent 则是 Components/ComponentName/Default.cshtml

最新文章

  1. Quartus II中的Waring(转)
  2. 移动Web开发(二)
  3. alu features menu
  4. CSS样式使用
  5. 提升WordPress站点速度的八个建议
  6. GLib基础
  7. jdk各个版本
  8. nginx -- 安装配置Nginx
  9. Heap Operations(模拟题)
  10. JS学习笔记——JavaScript继承的6种方法(原型链、借用构造函数、组合、原型式、寄生式、寄生组合式)
  11. 第六节 etc/passwd 、etc/shadow 、 useradd 、 groupadd
  12. frp使用笔记
  13. Codeforces 995 E - Number Clicker
  14. 他将Yahoo!Hadoop从20个节点扩展为42000个节点
  15. [HAOI2008]移动玩具(状压&amp;带权二分图)
  16. MVC 之 System.Web.Optimization找不到引用
  17. springcloud-03-服务注册
  18. Linux进程地址空间与虚拟内存
  19. Linux操作系统相关
  20. 前后端分离之JWT用户认证zf

热门文章

  1. log4j配置目标到mongodb
  2. Caused by: com.rabbitmq.client.ShutdownSignalException: connection error
  3. 回归Android之Android基础和小常识
  4. linux --- 3 vim 网络 用户 权限 软连接 压缩 定时任务 yum源
  5. vue学习【第七篇】:Vue之导入Bootstrap
  6. Cmder + Babun 打造 Windows 好用的终端工具
  7. 从0开始安装fedora23的笔记-- 以及使用fedora的常规问题
  8. CentOS7设置定时任务 每隔30分钟执行一次命令
  9. Unity3D学习笔记(二十六):MVC框架下的背包系统(1)
  10. s*s*r备用