Kentico 9 cms:cmsTextBox占位符本地化

时间:2016-07-20 13:21:19

标签: kentico

我已经复制了搜索框webpart,因此我可以进行更改。我试图将本地化字符串添加到占位符属性。

这不起作用:

<cms:CMSTextBox ID="txtWord" runat="server" EnableViewState="false" MaxLength="1000"
  ProcessMacroSecurity="false" placeholder="<%= CMS.Helpers.ResHelper.GetString("kff.Search--PlaceHolderCopy")%>" />

也不是这样:

<cms:CMSTextBox ID="txtWord" runat="server" EnableViewState="false" MaxLength="1000"
  ProcessMacroSecurity="false" placeholder='<%= CMS.Helpers.ResHelper.GetString("kff.Search--PlaceHolderCopy")%>' />

我有一个JS Snippet可以正常工作,但我希望避免在JS文件中复制。

&#13;
&#13;
  var $searchField = $('.searchTextbox');

  if ($('body').hasClass('ENCA')) {
    // search field placeholder copy      
    $searchField.attr('placeholder', 'Search For Stuff');
  }
  else {
    $searchField.attr('placeholder', 'Recherche');
  }
&#13;
&#13;
&#13;

我可以将本地化字符串添加到服务器标记,还是应该在后面的代码中完成。我也不确定代码背后的最佳位置,我无法看到Page_Load块。

2 个答案:

答案 0 :(得分:1)

您可以在代码隐藏中的SetupControl方法中添加以下行:

txtWord.Attributes.Add("placeholder", ResHelper.GetString("kff.Search--PlaceHolderCopy"));

您无法真正使用<%=语法来设置服务器端控件的属性。

另请注意,CMSTextBox控件具有WatermarkText属性,这可能是您要查找的属性。它使用AjaxControlToolkit库中的TextBoxWatermarkExtender控件。

答案 1 :(得分:0)

没有必要复制webpart并且只是为了这个简单的事情而重复代码。只需为该webpart创建不同的webpart layout,并在Panel上方添加以下代码:

<script runat="server">
    protected override void OnInit(EventArgs e)
    {
        base.OnInit(e);
        txtWord.Attributes.Add("placeholder", ResHelper.GetString("yourstring"));
    }
</script>