Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.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
Asp.net Kentico 9-转换内部的显示语言选择器_Asp.net_Kentico - Fatal编程技术网

Asp.net Kentico 9-转换内部的显示语言选择器

Asp.net Kentico 9-转换内部的显示语言选择器,asp.net,kentico,Asp.net,Kentico,我试图在转换中显示语言选择器 如果我将web部件添加到页面中,但在转换中定义它们不起作用,那么它就可以工作 这是我当前在转换中所做的,但是中继器只显示“Nothing!” 这是一个非常好的问题,我发现在转换或ASPX模板中使用Web部件通常存在很多困惑 这里的要点是 转换或ASPX模板通常不支持Web部件 由于Web部件通常是用户控件,您可以在转换中注册它们,但由于它们的特定生命周期,无法保证它们实际工作。更复杂的web部件肯定无法工作,语言选择器似乎也是如此 该官员表示:(见更新)

我试图在转换中显示语言选择器

如果我将web部件添加到页面中,但在转换中定义它们不起作用,那么它就可以工作

这是我当前在转换中所做的,但是中继器只显示“Nothing!”



这是一个非常好的问题,我发现在转换ASPX模板中使用Web部件通常存在很多困惑

这里的要点是

转换或ASPX模板通常不支持Web部件

由于Web部件通常是用户控件,您可以在转换中注册它们,但由于它们的特定生命周期,无法保证它们实际工作。更复杂的web部件肯定无法工作,语言选择器似乎也是如此

该官员表示:(见更新)

在转换中使用控件

您可以注册并使用用户 控件和服务器控件内部的转换。把这件事做完 转换示例。但是,在转换中使用web部件 出于性能原因,不建议使用

但是,这并不完全准确,因为它们根本不受支持。我已经向肯蒂科的技术人员提交了一份请求,要求他们对此进行补救

您最终可以尝试从语言选择器中创建一个常规的用户控件,并注册它,尽管我不完全确定它是否有用。我知道一些Kentico默认转换确实正在注册用户控件,因此在某些情况下可能会有所帮助

一般来说,尽可能避免在转换中使用用户控件。我建议您将语言选择器web部件放在转换之外,这将是在不进行任何其他调整的情况下使其正常工作的最简单方法

更新:

与Kentico团队交谈后,注释被更改以反映当前状态:

我们不建议在的代码中使用web部件 转变。这可能会导致性能低下,并导致某些web应用程序出现问题 零件可能因其使用寿命而无法在转换中正常工作 循环


我同意Enn的观点,中继器控制生命周期可能有问题,因为它是动态添加到页面的。
您是否尝试使用CMSRepeater控件而不是BasicRepater,并将DelayedLoading属性设置为true

问题在于您的数据源没有返回任何数据

如果您不需要在转换中动态生成数据源的属性,我建议您将语言数据源web部件放在工作正常的页面上,并在转换中参考其
web部件控件ID

语言数据源web部件可能缺少上下文中的某些内容。在内部,DS的
节点
属性使用转换中可能不可用的
DocumentContext.CurrentDocument
。要么是这样,要么就是Enn所说的控制有不同的周期


另一个选择是将自定义C#代码放在
括号内,并以编程方式检索所需的数据。

感谢您提供清晰详细的回答!我想我现在会尝试用户控制路线。如果失败了,那么我可能需要将菜单完全修改为自定义web部件。不客气!我一直与技术作者联系,他们已经更新了文档以反映当前状态。我也更新了我的答案。谢谢你的问题,希望你能让它正常工作:)谢谢你的回答!我现在有一些选择,所以我会看看进展如何。
<cms:LanguageDataSource ID="dsLanguages" ExcludeUntranslatedDocuments="false" ExcludeCurrentCulture="false" runat="server" />

<ul class="sub-menu">
  <cms:BasicRepeater ID="rptLanguages" DataSourceName="dsLanguages" ZeroRowsText="Nothing!" runat="server">
    <ItemTemplate>
      <li class="menu-item">
        <a href="<%# Eval("URL") %>"><span class="flag-icon flag-icon-<%# Eval("CultureCode") %>"></span><%# Eval("CultureName") %></a>
      </li>
    </ItemTemplate>
  </cms:BasicRepeater>
</ul>