ASP.NET Core具有View Components机制,用于重用部分视图。您可以使用Component.InvokeAsync调用将视图组件包括在剃刀模板文件中:

@await Component.InvokeAsync("MyComponent", new { data = 1 })


如果具有给定名称的视图组件不存在,则会引发InvalidOperationException异常。

InvalidOperationException: A view component named 'MyComponent' could not be found.


我想知道如何在剃刀视图中渲染之前检查视图组件是否存在。理想情况是:

@if (Component.Exists("MyComponent")
{
    @await Component.InvokeAsync("MyComponent", new { data = 1 })
}
else
{
    <p>Component not found</p>
}

最佳答案

您可以将IViewComponentSelector注入视图以检查组件是否存在:

@inject Microsoft.AspNetCore.Mvc.ViewComponents.IViewComponentSelector selector

@if (selector.SelectComponent("MyComponent")!= null)
{
    @await Component.InvokeAsync("MyComponent", new { data = 1 })
}
else
{
    <p>Component not found</p>
}

关于c# - 如何在ASP.NET Core的razor View 中呈现之前检查 View 组件是否存在,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38941028/

10-10 22:18