.Net Core组件化视图(部分视图)
.net core组件化视图(部分视图)
1.背景
1.以前我们使用.net的时候使用部分视图的方式在,.net core 中能在单独处理逻辑的部分视图没有了,但是我们还是想使用现在的.net core换了一种方式,将视图组件化了。
2.视图组件介绍
1.可以将我们的视图重复的部分分离出来,达到可复用。
2.可以编写业务逻辑,参数传递,单独测试,使用简单。
3.将复杂的页面,简单化。
3.视图组件特点
1.派生自viewcomponent使用 [viewcomponent] 属性装饰类,或从具有 [viewcomponent] 属性的类派生像控制器一样,视图组件必须是 public ,非嵌套和非抽象类。
视图组件名称是删除了 viewcomponent 后缀的类名,可以使用 viewcomponentattribute.name 属性显示指定。
2.完全支持构造函数依赖注入不参与控制器生命周期,这意味着不能在视图组件中使用过滤器
3.视图组件在 invokeasync 方法中定义其逻辑,并返回 iviewcomponentresult 。参数直接来自视图组件的调用,而不是来自模型绑定。视图组件从不直接处理请求。通常,视图组件通过调用 view 方法初始化模型并将其传递给视图。
总之,视图组件有以下特点:
- 定义一个 invokeasync 方法并返回 iviewcomponentresult。
- 通常通过调用 viewcomponent view 方法初始化模型并将其传递给视图。
- 参数来自调用方法,而不是 http,没有模型绑定。
- 不能直接作为 http 端点访问,它是从你的代码(通常在视图中)调用的。视图组件不处理请求。
- 在签名上重载,而不是当前 http 请求的任何细节。
4.视图组件路径
/views/home/components/header/index.cshtml
/views/shared/components/header/index.cshtml
/pages/shared/components/header/index.cshtml
1.只能放在这3个位置,规则在下面。
views/<controller_name>/components/<view_component_name>/<view_name>
views/shared/components/<view_component_name>/<view_name>
pages/shared/components/<view_component_name>/<view_name>
这个就是放错了,提示我放到正确的位置。
5.视图组件的使用
1.后台代码
视图组件类可以在项目的任何文件夹中。 [viewcomponent] 特性可以更改用于引用视图组件的名称。
[viewcomponent(name = "header")] public partial class headercontroller : viewcomponent { //调用异步方法 public async task<iviewcomponentresult> invokeasync(int id) { //返回参数,inex是自己定义的视图名称,如果没有就是default //第二个是返回参数,和之前的view()的参数一样。 return view("index",id); } }
继承于viewcomponent返回iviewcomponentresult。
还可以这样
/// <summary> /// 控制器调用 /// </summary> /// <returns></returns> public iactionresult info() { return viewcomponent("header", 5); }
2.前台代码
@await component.invokeasync("header", new { id=123})
效果
参考代码:https://gitee.com/d_c_l/test_viewcomponent.git
参考地址:
上一篇: 一文彻底搞懂面试中常问的各种“锁”
推荐阅读
-
详解Asp.Net Core 2.1+的视图缓存(响应缓存)
-
asp.net mvc4 mysql制作简单分页组件(部分视图)
-
.Net Core组件化视图(部分视图)
-
我来告诉你:VS2019开发ASP.NET Core 3.0 Web项目,修改视图后,刷新浏览器看不到修改后的效果怎么处理
-
笔记: ASP.NET Core视图组件
-
abp(net core)+easyui+efcore实现仓储管理系统——展现层实现增删改查之列表视图(七)
-
abp(net core)+easyui+efcore实现仓储管理系统——展现层实现增删改查之增删改视图(八)
-
asp.net core mvc权限控制:在视图中控制操作权限
-
详解使用asp.net mvc部分视图渲染html
-
在Asp.Net Core MVC 3.0 视图运行时编译