在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
概要:1.简单ViewComponent的用法2.ViewComponent控制器返回值3.注意事项1.简单ViewComponent的用法第一步:创建ASP.NET CORE Web应用程序,并在网站根目录创建 ViewComponents 文件夹 第二部:在ViewComponents文件夹中新建视图组件的控制器, 这儿我命名为 OnePartViewComponent 。 然后编辑该类,继承ViewComponent,实现InvokeAsync()或Invoke()方法
1 using Microsoft.AspNetCore.Mvc; 2 3 namespace AspCoreTest.ViewComponents 4 { 5 public class OnePartViewComponent : ViewComponent 6 { 7 //public async Task<IViewComponentResult> InvokeAsync() 8 public IViewComponentResult Invoke() 9 { 10 ViewData["Msg"] = "别看了,我就是分布视图"; 11 12 return View(); 13 } 14 } 15 }
第三步:创建视图 在Views文件夹下新建 Components 文件夹,在该Components文件夹下建 OnePart 文件夹, 接着在该OnePart文件夹下建视图页 Default.cshtml。暂且一行代码 1 <h1>@ViewData["Msg"]</h1>
到此一个简单的视图组件也就创建完了 第四部:在其他页面插入我们创建的这个视图组件,这儿我选择VS自动创建的 About 页面作为演示 1 @{ 2 ViewData["Title"] = "About"; 3 } 4 <h2>@ViewData["Title"].</h2> 5 6 @await Component.InvokeAsync("OnePart") 7 8 <h3>@ViewData["Message"]</h3> 9 10 <p>Use this area to provide additional information.</p> F5运行,点击About,转到About页面:
2.视图组件的控制器返回值 对于正式使用,可能会还会用到Model,在ViewComponent控制器中返回一个model。model文件夹并无明确要求,对视图组件来说,一般放在 ViewModels 文件夹下,在ViewModels 文件夹下新建 OnePart.class 1 namespace AspCoreTest.ViewModels 2 { 3 public class OnePart 4 { 5 /// <summary> 6 /// 姓名 7 /// </summary> 8 public string name { get; set; } 9 10 /// <summary> 11 /// 性别 12 /// </summary> 13 public string sex { get; set; } 14 } 15 } 在控制器中使用该Model处理数据,并返回给视图 1 using Microsoft.AspNetCore.Mvc; 2 using AspCoreTest.ViewModels; 3 4 namespace AspCoreTest.ViewComponents 5 { 6 public class OnePartViewComponent : ViewComponent 7 { 8 //public async Task<IViewComponentResult> InvokeAsync() 9 public IViewComponentResult Invoke() 10 { 11 ViewData["Msg"] = "别看了,我就是分布视图"; 12 13 OnePart onePart = new OnePart();//声明model 14 //数据处理 15 onePart.name = "Runing"; 16 onePart.sex = "男"; 17 18 //返回model 19 return View(onePart); 20 } 21 } 22 } 在视图中使用model的数据 @using AspCoreTest.ViewModels @model OnePart <h1>@ViewData["Msg"]</h1> <table> <tr> <td>姓名</td> <td>性别</td> </tr> <tr> <td>@Model.name</td> <td>@Model.sex</td> </tr> </table> OK,视图组件中使用Model大致流程就是这样,是不是感觉很简单 3.注意事项总结 a.固定命名规则: 文件夹:控制器文件夹 ViewComponents, 视图文件夹有两种选择:1.某个控制器(如:Home)专用的视图组件 {Home}/Components/{ViewComponent}/ 2.全局的视图组件 Shared/Components/{ViewComponent}/ 控制器:名 + ViewComponent 视图:Default.cshtml为默认查找的视图,若自定义视图名,在需要在ViewComponent控制器中返回时指定该视图即可 return View("MyView"); b.视图组件控制器中 Invoke()、InvokeAsunc()两个方法必须有且仅能有一个 |
请发表评论