【问题标题】:How to use views of View Component in different places in ASP.NET Core?如何在 ASP.NET Core 的不同位置使用视图组件的视图?
【发布时间】:2021-05-28 09:45:30
【问题描述】:

我在我的项目中使用视图组件。有时,我需要使用相同的视图组件作为各种样式。我研究了很多,但没有找到解决方案。

下面的代码可以正常工作,但是当我这样做时,我无法按照我想要的方式使用它。

查看组件类:

    public IViewComponentResult Invoke(BlogSidebarViewModel vm)
    {
        vm.BlogTags = _uow.BlogTag.GetAllByPriority(true,vm.LangId,vm.WebsiteId);
        vm.BlogCategories = _uow.BlogCategory.GetAllByPriority(true,vm.LangId,vm.WebsiteId).Include(p=>p.BlogTag);
        vm.RecentBlogs = _uow.Blog.GetAllByEnabledDate(true,vm.LangId,vm.WebsiteId);
        //return View(vm); //For Default Blog Sidebar View Component
        //return View("RedComponent", vm); //For Red Blog Sidebar View Component
        //return View("GreenComponent",vm);//For Green Blog Sidebar View Component
    }

但是,当我编写以下代码时,我得到了一个错误。

@await Component.InvokeAsync("BlogSidebar/RedComponent"); 

@await Component.InvokeAsync("~/Views/Shared/Components/BlogSidebar/GreenComponent.cshtml");

我想在各种视图中使用视图组件。我能怎么做?可以吗?

编辑

可以同时使用视图组件的视图吗?例如,当我在“Blogs/ABC.cshtml”视图中使用“GreenComponent”时,我想在“Blogs/XYZ.cshtml”视图中使用“RedComponent”视图。

【问题讨论】:

    标签: asp.net asp.net-core asp.net-core-viewcomponent


    【解决方案1】:

    请按照以下步骤使用视图组件:

    1.在文件夹Views/Shared/Components/BlogSidebar中创建GreenComponent.cshtml

    2.创建名为BlogSidebar的视图组件:

    public class BlogSidebar : ViewComponent
    {
        public IViewComponentResult Invoke(BlogSidebarViewModel vm)
        {
            vm.Id = 1;
            vm.Name = "aaa";
            return View("GreenComponent",vm);
        }
    }
    

    3.GreenComponent.cshtml:

    @model BlogSidebarViewModel
    Name: @Model.Name
    

    4.Index.cshtml:

    @model BlogSidebarViewModel
    
    @await Component.InvokeAsync("BlogSidebar",new BlogSidebarViewModel())
    

    结果:

    【讨论】:

    • 非常感谢。那么,我可以同时使用视图组件的视图吗?例如,当我在“Blogs/ABC.cshtml”视图中使用“GreenComponent”时,我想在“Blogs/XYZ.cshtml”视图中使用“RedComponent”视图。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-09-24
    • 1970-01-01
    • 2021-03-15
    • 1970-01-01
    • 2023-02-23
    • 1970-01-01
    相关资源
    最近更新 更多