• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

ASP.NETCORE自定义视图组件(ViewComponent)注意事项

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

概要: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()两个方法必须有且仅能有一个


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
asp.netmvc从客户端中检测到有潜在危险的Request.Form值的解决方法 ...发布时间:2022-07-10
下一篇:
【ASP.NETMVC系列】详解View发布时间:2022-07-10
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap