Orchard自定义模块共享目录

时间:2013-04-20 08:31:07

标签: asp.net-mvc orchardcms orchardcms-1.6

MVC View Engine的Orchard实现似乎没有在“Shared”目录中找到视图或部分视图,就像默认视图引擎一样。

所以,如果在我的cshtml中我引用了一个局部视图,如:

@Html.Partial("ViewFromShared")

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

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

另外,有没有办法让Orchard识别我的ViewStart页面?

谢谢。

更新:

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

  • 创建一个新的ASP .NET MVC 4项目(MyApp)。
  • 在共享目录(SharedFile.cshtml)中添加新的cshtml。
  • 添加新视图(Views / XYZ / MyView)和C​​ontroller(Controllers / XYZController)。
  • 从新的Controller Index方法调用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的内容。< / LI>

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

1 个答案:

答案 0 :(得分:1)

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