Asp.net core 学习笔记 ( ViewComponent 组件 )
2024-10-10 22:41:46
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
最新文章
- Quartus II中的Waring(转)
- 移动Web开发(二)
- alu features menu
- CSS样式使用
- 提升WordPress站点速度的八个建议
- GLib基础
- jdk各个版本
- nginx -- 安装配置Nginx
- Heap Operations(模拟题)
- JS学习笔记——JavaScript继承的6种方法(原型链、借用构造函数、组合、原型式、寄生式、寄生组合式)
- 第六节 etc/passwd 、etc/shadow 、 useradd 、 groupadd
- frp使用笔记
- Codeforces 995 E - Number Clicker
- 他将Yahoo!Hadoop从20个节点扩展为42000个节点
- [HAOI2008]移动玩具(状压&;带权二分图)
- MVC 之 System.Web.Optimization找不到引用
- springcloud-03-服务注册
- Linux进程地址空间与虚拟内存
- Linux操作系统相关
- 前后端分离之JWT用户认证zf
热门文章
- log4j配置目标到mongodb
- Caused by: com.rabbitmq.client.ShutdownSignalException: connection error
- 回归Android之Android基础和小常识
- linux --- 3 vim 网络 用户 权限 软连接 压缩 定时任务 yum源
- vue学习【第七篇】:Vue之导入Bootstrap
- Cmder + Babun 打造 Windows 好用的终端工具
- 从0开始安装fedora23的笔记-- 以及使用fedora的常规问题
- CentOS7设置定时任务 每隔30分钟执行一次命令
- Unity3D学习笔记(二十六):MVC框架下的背包系统(1)
- s*s*r备用