ASP.NET核心:具有2个调用的视图组件



我有许多视图组件,并在Page Maker软件中使用。但现在我需要为每个视图组件制作一个动态设置页面。

类似这样的东西:

@Component.InvokeAsync("Image");
@Component.InvokeSettingPage("Image");

或者任何制作这样东西的想法。

提前谢谢。

似乎不能对ViewComponent进行两次调用。从.net core 6开始,InvokeAsync方法中可以有多个属性,然后根据这些属性,您可以决定渲染什么或要做什么。

更多信息,你可以在这里找到-ViewComponent与可选参数

祝你好运!

参数将传递给InvokeAsync方法。本文中开发的PriorityList视图组件是从Views/ToDo/Index.cshtml视图文件中调用的。在下文中,InvokeAsync方法使用两个参数进行调用

namespace ViewComponentSample.ViewComponents
{
public class PriorityListViewComponent : ViewComponent
{
private readonly ToDoContext db;
public PriorityListViewComponent(ToDoContext context)
{
db = context;
}
public async Task<IViewComponentResult> InvokeAsync(
int maxPriority, bool isDone)
{
var items = await GetItemsAsync(maxPriority, isDone);
return View(items);
}
private Task<List<TodoItem>> GetItemsAsync(int maxPriority, bool isDone)
{
return db.ToDo.Where(x => x.IsDone == isDone &&
x.Priority <= maxPriority).ToListAsync();
}
}
}
@await Component.InvokeAsync("PriorityList", new { maxPriority = 4, isDone = true })

下面是一个用于动态呈现组件的示例代码。你可以通过参数whit Json在ViewComponent像这个

@foreach(var component in Model.SelectedComponent)
{
<div class="component">
@await Component.InvokeAsync(component.Name, component.OptionalJsonString)
</div>
}

相关内容

  • 没有找到相关文章

最新更新