我已经复制了搜索框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文件中复制。
var $searchField = $('.searchTextbox');
if ($('body').hasClass('ENCA')) {
// search field placeholder copy
$searchField.attr('placeholder', 'Search For Stuff');
}
else {
$searchField.attr('placeholder', 'Recherche');
}
&#13;
我可以将本地化字符串添加到服务器标记,还是应该在后面的代码中完成。我也不确定代码背后的最佳位置,我无法看到Page_Load块。
答案 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>