由Publishing Controls引发的Sharepoint Web部件验证

时间:2010-12-30 12:44:51

标签: c# sharepoint-2007 web-parts

我有一个Web部件,它在文本框字段上使用验证(InputFormRequiredFieldValidator)来阻止提交空字段。在编辑模式中单击“签入以共享草稿”或“发布”时,此验证已完成,因为我实际上并未尝试提交表单,而是将其签入,我宁愿这样做没发生。

我怎样才能做到这一点?

另请参阅:Sharepoint web part form validation blocks updating web part settings - 这有验证码,以及我如何解决EditorPart设置验证的问题。

更新:我已尝试检测EditDisplayMode并禁用验证程序,如下所示:

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

这不起作用 - 我在检查页面时仍然收到验证失败消息。也许我没有正确检测到DisplayMode。

4 个答案:

答案 0 :(得分:2)

正如Madhur指出我需要检查BrowseDisplayMode。我在编辑模式下开始关闭验证器的路线,并依赖于默认值true,但还有其他显示模式,如设计,我可能也会遇到问题。所以我检查了BrowseDisplayMode,如下所示:

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

这似乎可以解决问题。非常感谢任何人对此方法的任何反馈。

答案 1 :(得分:1)

我经历了一个痛苦的世界,让这个工作,所以我想分享。

即使我正确地进入显示模式,无论模式如何,我的控制都会继续验证。

最终解决方案涉及三件事:

  1. 默认情况下禁用RegularExpressionValidator - 即Enabled-“false”
  2. 将我的代码移到CreateChildControls方法中。
  3. 添加ELSE子句!没有它,验证总是设置为true。不要问我为什么。
  4. 这是代码。以前提供的示例的基本变化。

    // 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.";
    }
    

答案 2 :(得分:0)

使用WebPartManager.DisplayMode枚举检测当前页面模式,并仅在BrowseDisplayMode

中启用验证

这就是SharePoint OOTB webparts验证的方式。

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

答案 3 :(得分:0)

//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
    } 
});