Правильный способ включить автозаполнение в формах SharePoint (Asp.Net)?

В SharePoint (как WSS3, так и WSS2) существует проблема, заключающаяся в том, что формы регистрации и редактирования элементов не имеют функции «автозаполнения» в Internet Explorer.
То есть, если вам часто требуется одно и то же значение в каком-либо текстовом поле, у вас есть набрать вручную. Internet Explorer не предоставляет вам раскрывающийся список значений, которые вы ввели ранее. Однако в FireFox это работает.

Как я узнал из этот ответ на аналогичный вопрос, это связано с тем, что Internet Explorer отключает автозаполнение на страницах с заголовками" без кеширования "или" срок действия ". SharePoint действительно отправляет клиенту не кэшируемые страницы. В этом ответе SO также говорится, что нужно добавить autocomplete="on" к тегу form, он переопределяет заголовки кеша.

Я отредактировал элемент FORM на главной странице по умолчанию на моем сервере, чтобы он всегда включал autocomplete="on" и - да, функция автозаполнения работает!

Однако Microsoft предупреждает нас НЕ редактировать "default.master" так как он будет перезаписан следующим пакетом обновления или патчем.

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


person naivists    schedule 11.03.2010    source источник


Ответы (1)


Однако Microsoft предупреждает нас НЕ редактировать «default.master», так как он будет перезаписан следующим пакетом обновления или патчем.

Скопируйте и вставьте новую главную страницу с другим именем и используйте ее как страницу по умолчанию. Используйте дизайнер SharePoint или программно установите SPWeb.MasterUrl и / или SPWeb.CustomMasterPage.

Для этого у меня есть 2 функции

  • Один для установки настраиваемой главной страницы на текущем веб-сайте
  • Другой, чтобы активировать предыдущую функцию на всех веб-страницах + функцию скрепления для вновь созданных веб-сайтов

http://img251.imageshack.us/img251/7351/ss20100312093605.png (MWSBalticovo предназначен для рабочей области встреч - у них другая главная страница)

Веб-функция для одного веб-сайта для использования настраиваемой главной страницы.

У меня есть функция с моей настраиваемой главной страницей в упаковке:

<?xml version="1.0" encoding="utf-8" ?>
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
    <Module Name="BalticovoMasterPages" List="116" Url="_catalogs/masterpage" RootWebOnly="TRUE" Path="MasterPages">
        <File Url="Balticovo.master" Type="GhostableInLibrary" IgnoreIfAlreadyExists="TRUE">
            <Property Name="ContentType"            Value="$Resources:core,MasterPage;"/>
            <Property Name="MasterPageDescription"  Value="$Resources:Balticovo,BalticovoMasterPageDescription;"/>
        </File>
        <File Url="MWSBalticovo.master" Type="GhostableInLibrary" IgnoreIfAlreadyExists="TRUE">
            <Property Name="ContentType"            Value="$Resources:core,MasterPage;"/>
            <Property Name="MasterPageDescription"  Value="$Resources:Balticovo,MWSBalticovoMasterPageDescription;"/>
        </File>
    </Module>
</Elements>

И FeatureReceiver:

public override void FeatureActivated(SPFeatureReceiverProperties properties)
{
    SPWeb web = properties.Feature.Parent as SPWeb;

    string masterUrl = "/_catalogs/masterpage/Balticovo.master";
    string mwsMasterUrl = "/_catalogs/masterpage/MWSBalticovo.master";

    if (web.CustomMasterUrl.ToLower().Contains("/mws")) //meeting workspace
        web.CustomMasterUrl = mwsMasterUrl;
    else
        web.CustomMasterUrl = masterUrl;

    web.MasterUrl = masterUrl;
    web.Update();
}

public override void FeatureDeactivating(SPFeatureReceiverProperties properties)
{
    SPWeb web = properties.Feature.Parent as SPWeb;
    web.MasterUrl = "/_catalogs/masterpage/default.master";
    if (web.CustomMasterUrl.ToLower().Contains("/mws")) //meetng workspace
        web.CustomMasterUrl = "/_catalogs/masterpage/MWSdefault.master";
    else
        web.CustomMasterUrl = "/_catalogs/masterpage/default.master";
    web.Update();
}

2-я функция области действия сайта для включения предыдущих функций

elements.xml (активируйте первую функцию на вновь созданных веб-сайтах, но не активируйте на существующих):

<?xml version="1.0" encoding="utf-8" ?>
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
    <FeatureSiteTemplateAssociation
        TemplateName="GLOBAL"
        Id="{227c6aed-f66b-482d-aea8-a2af3ca203b7}" />
</Elements>

FeatureReceiver (активируйте первую функцию на существующих веб-сайтах):

public override void FeatureActivated(SPFeatureReceiverProperties properties)
{
    Guid masterPageFeatureId = new Guid("{227c6aed-f66b-482d-aea8-a2af3ca203b7}");
    SPSite site = properties.Feature.Parent as SPSite;
    SPWebCollection webs = site.AllWebs;
    foreach (SPWeb web in webs)
    {
        try
        {
            if (web.Features[masterPageFeatureId] == null)
                web.Features.Add(masterPageFeatureId);
        }
        catch (InvalidOperationException)  //target feature not yet installed
        { throw; }
        catch (SPException) { } //If feature could not be activated.
        finally
        {
            if (web != null)
                web.Dispose();
        }
    }
}

public override void FeatureDeactivating(SPFeatureReceiverProperties properties)
{
    Guid masterPageFeatureId = new Guid("{227c6aed-f66b-482d-aea8-a2af3ca203b7}");
    SPSite site = properties.Feature.Parent as SPSite;
    SPWebCollection webs = site.AllWebs;
    foreach (SPWeb web in webs)
    {
        try
        {
            if (web.Features[masterPageFeatureId] == null)
                web.Features.Remove(masterPageFeatureId);
        }
        catch (InvalidOperationException) { }
        catch (SPException) { }
        finally
        {
            if (web != null)
                web.Dispose();
        }
    }
}
person Janis Veinbergs    schedule 12.03.2010