1

MVC 视图引擎的 Orchard 实现似乎没有像默认视图引擎那样在“共享”目录中找到视图或部分视图。

因此,如果在我的 cshtml 中我指的是部分视图,例如:

@Html.Partial("ViewFromShared")

这将在自定义 Orchard 模块中失败(但在正常的 ASP .NET 网站中工作)。

如何让 Orchard 视图引擎搜索共享目录?

另外,有什么方法可以让 Orchard 识别我的 ViewStart 页面?

谢谢你。

更新:

我可以按照以下确切步骤进行重现:

  • 创建一个新的 ASP .NET MVC 4 项目 (MyApp)。
  • 在 Shared 目录 (SharedFile.cshtml) 中添加一个新的 cshtml。
  • 添加一个新的视图(Views/XYZ/MyView)和控制器(Controllers/XYZController)。
  • 从新的控制器索引方法调用 View("MyView")。
  • 将 Html.Partial("SharedFile") 添加到 MyView
  • 将网站发布到 Orchard/Modules/MyApp。
  • 添加一个 Module.txt(名称:MyApp)
  • 添加 IRouteProvider 和以下 RouteDescriptor

    new RouteDescriptor
            {
                Priority = 5,
                Route = new Route(
                    "Modules/MyApp/{controller}/{action}",
                    new RouteValueDictionary
                        {
                            {"area", "MyApp"}
                        },
                    new RouteValueDictionary(),
                    new RouteValueDictionary
                        {
                            {"area", "MyApp"}
                        },
                    new MvcRouteHandler())
            },
    
  • 在浏览器中转到 myorchardsite/Modules/MyApp/XYZ/Index。

  • 未找到 ViewFromShared 并引发异常:

预期结果:ViewFromShared 应呈现在页面上

  • 如果我删除对@Html.Partial("ViewFromShared") _ViewStart.cshtml 和 _Layout.cshtml 的调用,并且没有 html/head/body 标记...只是 MyView.cshtml 的内容。

预期结果:我应该在页面中呈现 _ViewStart.cshtml 和 _Layout.cshtml。

4

1 回答 1

1

您可以使用@Display.ViewFromShared()动态创建形状并使其在适当位置渲染。如果需要,您甚至可以使用诸如@Display.ViewFromShared(SomeProperty: val, SomeOtherProperty: 42). 有关动态创建形状的更多详细信息,请参阅https://weblogs.asp.net/bleroy/creating-shapes-on-the-fly

于 2016-04-25T18:23:51.943 回答