Вопрос

Я пытаюсь настроить текст, отображаемый в поле поиска моего сайта SharePoint.Значение по умолчанию - "Поиск по этому сайту...".

Я нашел несколько статей, в которых объясняется, как это сделать (путем переопределения элемента управления делегатом с меньшим порядковым номером), и это работает нормально.

Мой XML выглядит следующим образом :

<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
    <Control
        Id="SmallSearchInputBox"
        Sequence="10"
        ControlClass="Microsoft.SharePoint.Portal.WebControls.SearchBoxEx" ControlAssembly="Microsoft.Office.Server.Search, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c">
        <Property Name="GoImageUrl">/_layouts/images/gosearch15.png</Property>
        <Property Name="GoImageUrlRTL">/_layouts/images/gosearchrtl15.png</Property>
        <Property Name="GoImageActiveUrl">/_layouts/images/gosearchhover15.png</Property>
        <Property Name="GoImageActiveUrlRTL">/_layouts/images/gosearchrtlhover15.png</Property>
        <Property Name="DropDownMode">ShowDD</Property>
        <Property Name="SearchResultPageURL">/_layouts/osssearchresults.aspx</Property>
        <Property Name="ScopeDisplayGroupName"></Property>
        <Property Name="FrameType">None</Property>
        <Property Name="QueryPromptString">DO A SEARCH!</Property>
    </Control>
</Elements>

Это работает нормально, в окне поиска отображается "ВЫПОЛНИТЬ ПОИСК!", как и ожидалось.Однако я хочу, чтобы эта строка была локализована.Когда я это делаю

<Property Name="QueryPromptString">$Resources:MyResourceFile,CustomText;</Property>

В окне поиска отображается $Resources:MyResourceFile,CustomeText;буквально, вместо того чтобы оценивать это.

Как мне поместить туда локализованные строки?

Спасибо!

Это было полезно?

Решение

Линия <Property Name="QueryPromptString">$Resources:MyResourceFile,ResourceKey</Property> для меня это прекрасно.Я думаю, что вам следует проверить свой файл ресурсов.Этот файл должен содержать ResourceKey, который вы пытаетесь использовать в этом свойстве.

Если вы используете правильный файл ресурсов и ключ, элемент управления поиском отображает текст в зависимости от языка сайта.Если вы хотите динамически изменять этот текст, как вы видите на рисунке ниже, вам следует выполнить несколько более сложных шагов.

enter image description here

шаги:

  1. Создайте свой пользовательский класс и унаследуйте его от SearchBoxEx
  2. Создайте новое свойство QueryPromptString
  3. Определите безопасный контроль
  4. Создать делегированный элемент управления

код для шагов:

public class SearchBox : SearchBoxEx
{
    [Browsable(false)]
    public new string QueryPromptString
    {
        get
        {
            return base.QueryPromptString;
        }
        set
        {
            string fullKey = string.Format("$Resources:{0}", value);
            base.QueryPromptString = SPUtility.GetLocalizedString(fullKey, null, (uint)Thread.CurrentThread.CurrentUICulture.LCID);
        }
    }
}

<Control Id="SmallSearchInputBox"
           Sequence="10"
           ControlClass="LocalizedSearch.SearchBox"
           ControlAssembly="LocalizedSearch, Version=1.0.0.0, Culture=neutral, PublicKeyToken=71df3f77c17b7c69">
        <Property Name="GoImageUrl">/_layouts/images/gosearch15.png</Property>
        <Property Name="GoImageUrlRTL">/_layouts/images/gosearchrtl15.png</Property>
        <Property Name="GoImageActiveUrl">/_layouts/images/gosearchhover15.png</Property>
        <Property Name="GoImageActiveUrlRTL">/_layouts/images/gosearchrtlhover15.png</Property>
        <Property Name="DropDownMode">ShowDD</Property>
        <Property Name="SearchResultPageURL">/_layouts/osssearchresults.aspx</Property>
        <Property Name="ScopeDisplayGroupName"></Property>
        <Property Name="FrameType">None</Property>
        <Property Name="QueryPromptString">filename,key</Property>
  </Control>
Лицензировано под: CC-BY-SA с атрибуция
Не связан с sharepoint.stackexchange
scroll top