我在我的应用程序中创建了一个名为Orchard.Blogs的模块。现在,我可以将博客视图作为其他视图的部分视图吗?对于Ex:http://localhost/Orchard.Web/Orchard.HrCompany/Payroll/GetPay是我的网址,在我的GetPay视图中,我可以将Orchard.Blogs视图用作局部视图吗?
答案 0 :(得分:0)
果园中的所有视图都称为“形状”,并且您可以使用“IShapeFactory”界面在任何地方渲染任何形状,您可以尝试以下代码:
private readonly dynamic _shapeFactory;
public Constructor(IShapeFactory shapeFactory) {
_shapeFactory = shapeFactory;
}
public void CreateShape(){
dynamic customShape = _shapeFactory.CustomShape(ViewModel: viewModel);
}
此代码搜索名为“CustomShape”的视图,然后使用我们发送的命名参数进行渲染。 另一方面,您可以直接在任何视图中显示任何形状,如:
@Display.CustomShape(ViewModel: viewModel)
答案 1 :(得分:0)
理论上,你可以使用你喜欢的任何视图。但是,许多视图需要视图模型。例如,action方法返回的视图可能有一个视图模型。如果要重用该视图,则还必须提供该模型的实例。
其他视图由呈现的形状使用。如果要渲染这些视图,则必须实际创建该形状的实例。如果这些视图期望形状上存在某些属性,则还必须设置这些属性。
正如您可能看到的,这不是非常简单,因为它可能涉及复制大量逻辑以构建所需数据(例如,想想创建形状的内容部件驱动程序)。
我要做的是让我们知道您希望“重用”的博客模块的特定视图。也许有更好的方法。例如,您可能想要使用BlogArchives小部件。或者也许是投影小工具来呈现特定博客的所有帖子。
根据您的确切用例场景,必然会有一个合适的解决方案。由于我刚刚列出的原因,通常不会盲目地重复使用其他模块的视图。