将当前模型向下传递到更具体的形状

Pass the current Model down to a more specific shape

TL;DR:如何将模型传递到下一个形状?

我修改了我的主题 (Views\Orchard.Search\Search\Index.cshtml) 中的 Orchard.Search 模块搜索结果视图,并将其拆分为几个场景。我测试了一个结果,然后直接重定向并测试没有搜索词和多个搜索结果。

我想将这些场景放在单独的 .cshtml 视图中,但这些特殊形状需要访问主搜索结果模型 (@model Orchard.Search.ViewModels.SearchViewModel)。

我尝试使用 Arguments.From 来制作一个可以工作的动态对象,但随后我必须将视图中的所有内容转换回其正确的数据类型,因为下一个形状会考虑其上的每个 属性模型的类型为 dynamic

相反,我试图弄清楚如何将整个 Model 传递到下一个形状:

@if (HasMultipleResults())
{
    var shapeFactory = (IShapeFactory)New;
    // this doesn't work
    var multipleResultsShape = (dynamic)shapeFactory.Create("Search_MultipleResults", Model);
    @Display(multipleResultsShape);
    return;
}

我还没有找到让它工作的方法,有人可以教我吗?

如果动态方法的第一个参数是一个类型,那么它将被用作模型。

New.YourShape(typeof(YourType))

有关详细信息,请观看此视频:https://www.youtube.com/watch?v=gKLjtCIs4GU&feature=youtu.be&t=1127