Sitecore MVC模板中的iframe字段未加载

Sitecore MVC模板中的iframe字段未加载,sitecore,asp.net-mvc-routing,sitecore-mvc,Sitecore,Asp.net Mvc Routing,Sitecore Mvc,我在一个Sitecore模板中使用iFrame作为字段类型。在iFrame字段的source字段中,我提到了指向控制器操作的路由 字段类型:IFrame 来源:/mvc/modules/products/getList 在routeconfig.cs文件中,我将路由配置为 routes.MapRoute( "SitecoreModulesDefault", "/mvc/modules/{controller}/{action}",

我在一个Sitecore模板中使用iFrame作为字段类型。在iFrame字段的source字段中,我提到了指向控制器操作的路由

字段类型:IFrame
来源:
/mvc/modules/products/getList

在routeconfig.cs文件中,我将路由配置为

        routes.MapRoute(
            "SitecoreModulesDefault",
            "/mvc/modules/{controller}/{action}",
            new { controller = "products", action = "getList" }
        );
然后创建上述模板类型的内容项。当我检查iFrame字段时,我看到没有调用控制器,并且我看到错误为“未找到请求的文档”,带有以下附加信息:

请求的URL:/mvc/modules/products/getList
用户名:sitecore\admin
网站名称:网站

有些人认为路由没有重定向到控制器操作。是否还有其他配置,或者我在哪里做错了什么?提前谢谢


注意:我正在使用带MVC的Sitecore 8.1。此外,我不能在这里使用.aspx文件而不是控制器

看起来Sitecore正在提取Url并对其进行处理,但由于您没有为该Url设置Sitecore项目,因此会出现404错误

您有两种选择:

  • 将您的url添加到
    IgnoreUrlPrefixes
    设置:
  • 创建一个与IFrame所需Url匹配的项,并将其上的表示设置为将控制器操作用作控制器呈现
  • 这两种选择都有利弊。对于选项1,缺点是您将无法使用Sitecore上下文,这可能是问题,也可能不是问题,具体取决于您的代码。从好的方面来说,你不能通过在内容编辑器中弄乱一些东西来“破坏”IFrame内容

    选项2的优点是,它与其他Sitecore页面一样工作,您可以利用Sitecore的输出缓存来提高性能,并且对演示文稿的更改不必基于代码。不利的一面是,您将依赖于项目结构,因此必须确保安全设置正确,以防止对其进行不必要的更改

    总的来说,我认为对于呈现的Html输出,选项2通常是我喜欢的方式,因为它给了您更多的灵活性。但这两种选择都很有效

    如果你选择选项1,这篇文章提供了另一种修补忽略列表的方法: