Проверка веб-части Sharepoint отключена с помощью Publishing Controls - PullRequest
1 голос
/ 30 декабря 2010

У меня есть веб-часть, которая использует проверку (InputFormRequiredFieldValidator) в поле текстового поля, чтобы предотвратить отправку пустого поля. Когда вы нажимаете «Проверить, чтобы поделиться черновиком» или «Опубликовать» , находясь в режиме редактирования , эта проверка выполняется, и, поскольку я на самом деле не пытаюсь отправить форму, а проверю ее, я бы предпочел, чтобы не случилось.

Как мне этого добиться?

См. Также: Проверка формы веб-части Sharepoint блокирует обновление параметров веб-части. - здесь указан код проверки и способ решения проблемы установки EditorPart с отключением проверки.

Обновление : я пытался обнаружить EditDisplayMode и отключить валидатор следующим образом:

if (WebPartManager.DisplayMode.Equals(WebPartManager.EditDisplayMode))
{
     messageRequiredValidator.Enabled = false;
}

Это не работает - я все еще получаю сообщение об ошибке проверки при проверке на странице. Возможно, я неправильно определяю DisplayMode.

Ответы [ 4 ]

2 голосов
/ 30 декабря 2010

Как отметил Мадхур, мне нужно было проверить режим BrowseDisplayMode.Я начал идти по пути отключения валидатора в режиме редактирования и полагаться на значение по умолчанию true, но есть и другие режимы отображения, такие как «Дизайн», где я также мог бы получить проблему.Поэтому я проверил режим BrowseDisplayMode следующим образом:

WebPartManager mgr = WebPartManager.GetCurrentWebPartManager(Page);
if (mgr.DisplayMode.Equals(mgr.SupportedDisplayModes["Browse"]))
{
     messageRequiredValidator.Enabled = true;
}
else
{
     messageRequiredValidator.Enabled = false;
}

Это, кажется, делает свое дело.Буду признателен за любые отзывы об этом методе.

1 голос
/ 24 января 2012

Я прошел через мучительный мир, заставляя это работать, поэтому думал, что поделюсь им.

Даже при том, что я правильно получал режим отображения, мой контроль продолжал подтверждаться независимо от режима.

Окончательное решение включало три вещи:

  1. Отключение RegularExpressionValidator по умолчанию - т.е. Enabled- "false"
  2. Перемещение моего кода в метод CreateChildControls.
  3. Добавление условия ELSE!Без этого валидация ВСЕГДА была установлена ​​на true.Не спрашивайте меня, почему.

А вот и код.Основная вариация на ранее предоставленных примерах.

// Get the current display mode of the WPM
WebPartManager wp = WebPartManager.GetCurrentWebPartManager(Page);
String mode = wp.DisplayMode.Name;
// Enable validation in BrowseDisplayMode only
if (wp.DisplayMode == WebPartManager.BrowseDisplayMode)
{
    reqJournal.Enabled = true;
}
else
{
    reqJournal.Enabled = false;
    lblMsg.Text = "<strong>" + mode + " mode</strong>: Validation is disabled.";
}
0 голосов
/ 22 июля 2013
//disable javascript on sharepoint edit mode
$(function () {
    var inDesignMode = document.forms[MSOWebPartPageFormName].MSOLayout_InDesignMode.value;

    if (inDesignMode == "1") {
        // page is in edit mode
        if ((typeof (Page_Validators) != "undefined") && (Page_Validators != null)) {
            var i;
            for (i = 0; i < Page_Validators.length; i++) {
                ValidatorEnable(Page_Validators[i], false);
            }
        }
    }
    else {
        // page is in browse mode
    } 
});
0 голосов
/ 30 декабря 2010

Используйте перечисление WebPartManager.DisplayMode, чтобы определить текущий режим страницы и включить проверку только в BrowseDisplayMode

. Так веб-части SharePoint OOTB выполняют проверку.

http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.webparts.webpartmanager.displaymode.aspx

...