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

时间:2016-01-04 09:31:24

标签: sitecore asp.net-mvc-routing sitecore-mvc

我在我的Sitecore模板中使用iFrame作为字段类型。在iFrame字段的source字段中,我提到了我的Controller操作的路由。

FieldType: IFrame
来源: files = dir('*.mat'); for file = 1:files mat = load(files(file).name); % Do some stuff %Conten = who; F_current=files(file).name F_name = strcat(a1(1:end-3),'txt') save(F_name, Conten{:}, '-ascii') end

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

 public class Home
    {
        public int i;

        [Required(ErrorMessage="Please enter")]
        [StringLength(160)]
        public string name;
    }

然后我创建上述模板类型的内容项。当我检查iFrame字段时,我看到控制器未被调用,我看到错误为未找到所请求的文档,附件如下信息:

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

路由如何不重定向到控制器操作。还有什么可以配置或我在某处做错了吗?提前谢谢!

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

1 个答案:

答案 0 :(得分:0)

看起来Sitecore正在拿起网址并对其进行处理,但由于您没有为该网址设置Sitecore项目,因此会给您404错误。

您有两个选择:

  1. 将您的网址添加到IgnoreUrlPrefixes设置:
  2. <setting name="IgnoreUrlPrefixes" value="/mvc/modules/|... all original values ..."/>

    1. 创建与IFrame所需的Url相匹配的项目,并在其上设置演示文稿以将控制器操作用作Controller Rendering
    2. 两种选择都有利弊。对于选项1,缺点是您不会使用Sitecore上下文,这可能是也可能不是问题,具体取决于您的代码。从好的方面来说,你不能打破&#34;打破&#34;在内容编辑器中弄乱了一些内容。

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

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

      如果你选择选项1,这篇文章提供了另一种修补忽略列表的方法:http://www.awareweb.com/awareblog/12-14-15-patchableignorelist