调用ViewComponent,其中派生类型和参数在编译时未知(在视图中)

时间:2016-03-29 06:04:59

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

我正在开发一个项目,我希望通过ViewComponents和部分类呈现大部分UI。我希望调用这些ViewComponents的Views不知道它们正在调用的ViewComponent的类型以及ViewComponent需要的数据。这些具体细节是在链上确定的。

我可以通过使用ViewModel传入组件的名称来保持Views不知道ViewComponent类型,如下所示:

@model ShopList.ViewModels.IndexViewModel<Item>

@foreach (var i in Model.Elements)
{
    <tr>
        <td>
            @Component.Invoke(Model.ViewComponentName)
        </td>
    </tr>
}

这里的事情按预期工作,我笑了。当ViewComponent需要其Invoke()的任意数据时会出现问题。

如果我使用ViewModel传递数据并在Invoke()中使用它,那么即使所有ViewComponents都不需要它,也会被强制确认。另外,我可以让ViewComponents收集他们自己的数据,而不是从调用视图中接受一些数据,但这样做很浪费,而且它们的可重用性较低。

有没有一种方法可以将数据传递给ViewComponent而不在View中进行硬编码?或者,也许我走错了路;有更好的方法吗?

0 个答案:

没有答案