Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Razor:从页面模板上的组件模板检索变量_Razor_Tridion_Experience Manager - Fatal编程技术网

Razor:从页面模板上的组件模板检索变量

Razor:从页面模板上的组件模板检索变量,razor,tridion,experience-manager,Razor,Tridion,Experience Manager,大家好, 我一直在开发一套Razor模板,这些模板可以通过Experience Manager进行站点编辑,同时可以通过Twitter引导完全响应多个屏幕宽度。因此,我需要根据Experience Manager编辑器添加或删除的内容动态操作DOM输出,但仍要维护响应性设计。这种结构的一部分是遵守twitter引导程序规定的规则 TwitterBootstrap通过使用类引入动态计算的div宽度来实现出色的性能。A目前,似乎用户正在组件字段中定义宽度位置。我认为,这是非常典型的,但是如果您创建5

大家好, 我一直在开发一套Razor模板,这些模板可以通过Experience Manager进行站点编辑,同时可以通过Twitter引导完全响应多个屏幕宽度。因此,我需要根据Experience Manager编辑器添加或删除的内容动态操作DOM输出,但仍要维护响应性设计。这种结构的一部分是遵守twitter引导程序规定的规则


TwitterBootstrap通过使用类引入动态计算的div宽度来实现出色的性能。A
目前,似乎用户正在组件字段中定义宽度位置。我认为,这是非常典型的,但是如果您创建5个组件模板,它将调用同一个Razor TBB,并在组件模板上定义一个参数模式,其中可以设置组件的宽度,然后您可以轻松地在页面模板中调用这些不同的CT。

该包不会在模板运行时之间共享,因此,这种行为是正常的(不能从不同的实例中看到在一个模板中设置的变量)

这有很多方法,但是你应该考虑到为什么Trdion选择隔离模板执行是有原因的。


有关解决此问题的方法之一,请参阅。

使用ContextVariables字典的标准技术不允许您在CT中设置某些内容并从PT访问它。实际上,每次呈现组件时,呈现上下文都会从页面呈现上下文获取变量的新副本。因此,给他们回信是无效的。有一种技术可以解决这个问题,那就是。如前所述,采用这些技术不应该是你的第一选择,但有时你需要这样做。

我不太确定我是否在遵循,因为我可以从页面模板中调用组件模板,但不能调用我在组件模板本身内设置的变量。嗯,在这种情况下,只需在助手文件中定义一个函数,并在页面模板上调用该函数。我认为,这只是将这个函数作为变量调用的唯一方法。Nuno的答案听起来坚如磐石,但我相信Priyank可能对helper文件有一点看法。我决定在这个问题上使用一个模式和一个可嵌入的模式,毕竟,使用一个不同的、专用的模板。谢谢你的帮助。很好的问题,我们能让你有兴趣参与这个项目吗。如果您有时间,请使用相同的SO帐户注册。好奇。我想我已经承诺了,大约4个月前。我现在就用这个账户。
<div class="row-fluid">
    <div class="span6">..code</div>
    <div class="span4">..code</div>
    <div class="span2">..code</div>
</div>
@{
var spanClass = String.Empty;
if (Fields.HasField("component_width") && Fields.component_width != null) {
    if (Fields.component_width.ToLower() == "full") {
        spanClass = "span12";
    } else if (Fields.component_width.ToLower() == "half") {
        spanClass = "span6";
    } else if (Fields.component_width == "40%") {
        spanClass = "span5";
    } else if (Fields.component_width == "35%") {
        spanClass = "span4";
    } else if (Fields.component_width == "25%") {
        spanClass = "span3";
    }
}
}
<div class="@spanClass">...code
<div class="row-fluid">
    <div class="span12">..code</div>
</div>
<div class="row-fluid">
    <div class="span6">..code</div>
    <div class="span6">..code</div>
</div>
@foreach (var cp in GetComponentPresentationsByTemplate("XM_Generic Content")) {
            @if (cp.Component.spanClass == "span6") {
                <div class="row-fluid">
                @cp.RenderComponentPresentation()
                @if (cp.Index == 1) {
                   </div>
                }
            }
}