【问题标题】:More than one IViewComponentResult method in ViewComponent ClassViewComponent 类中有多个 IViewComponentResult 方法
【发布时间】:2021-12-30 22:37:33
【问题描述】:

是否可以在单个 ViewComponent 类中访问多个 IViewComponentResult 方法?我似乎能够创建多个方法,每个方法都引用自己的视图,但我一直无法找到一种方法来从剃刀视图中引用类中的各个方法。

public class PageHeaderViewComponent: ViewComponent
{
    public IViewComponentResult Header(LayoutModel layoutModel)
    {
        return View("Header", layoutModel);
    }

    public IViewComponentResult PageHeaderUpper(LayoutModel layoutModel)
    {
        return View("PageHeaderUpper", layoutModel);
    }

}

【问题讨论】:

  • 嗨@earlxtr,我的回答是否帮助您解决了问题?如果是这样,你能接受作为答案吗?如果没有,你能跟进让我知道吗?参考:How to accept as answer。谢谢。

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


【解决方案1】:

我建议您可以将参数传递给 Invoke 方法以有条件地返回不同的视图:

public class PageHeaderViewComponent : ViewComponent
{
    public IViewComponentResult Invoke(LayoutModel layoutModel,string name)
    {
        if(name=="header")
        {
            return View("Header", layoutModel);
        }
        else
        {
            return View("PageHeaderUpper", layoutModel);
        }
    }
}

您可以在主视图中调用如下视图组件:

@await Component.InvokeAsync(typeof(PageHeaderViewComponent), new { LayoutModel= new LayoutModel() , name = "header" })
@await Component.InvokeAsync(typeof(PageHeaderViewComponent), new { LayoutModel= new LayoutModel() , name = "aaa" })

查看组件位置:

此外,您还可以使用 LayoutModel 中的属性作为条件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-02-02
    • 2018-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-10
    • 1970-01-01
    相关资源
    最近更新 更多