c# – Page_ClientValidate()对象预期的错误,找不到验证器

前端之家收集整理的这篇文章主要介绍了c# – Page_ClientValidate()对象预期的错误,找不到验证器前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个表单HomePage.aspx包含一个空的asp:面板,一个下拉列表让用户选择一个SPFielType …在索引更改,我的HomePage.aspx.cs页面获取选定的文本,并将加载面板中的用户控件,该用户控件将基于用户选择的spfieldtype生成一个控件和一个调用validateForm()函数的按钮…我的问题是validateForm()中的Page_ClientValidate()函数无法找到验证器,我也尝试过给一个组名,但仍然不工作.
当我将按钮放入我的aspx页面(不是动态呈现)时,它正在验证我的页面(< asp:Button ID =“submitbutton”Text =“验证”runat =“server”/>).
但是当我动态渲染它,不能验证形式.这是我试图做的:
protected override void CreateChildControls()
{
    try
    {
        fieldRenderingControl = this.CreateFieldRenderingControl(this.FieldType);
        this.Controls.Add(fieldRenderingControl);

        Button button = new Button();
        button.UseSubmitBehavior = false;
        button.Text = "ValidateButton";
        button.ID = "ValidateButton";
        button.OnClientClick = "validateForm()";
        this.Controls.Add(button);

        requiredFieldValidator newValidator = new requiredFieldValidator();
        newValidator.Text = "***";
        newValidator.ID = "valideee";
        newValidator.EnableClientScript = true;
        newValidator.Enabled = true;
        newValidator.SetFocusOnError = true;
        newValidator.Display = ValidatorDisplay.Dynamic;
        newValidator.ControlToValidate = fieldRenderingControl.ID;
        this.Controls.Add(newValidator);

    }
    catch (Exception ex)
    {
    }

}

// CreateFieldRenderingControl()函数将根据用户选择的参数fieldType生成一个控件.

提前致谢.

解决方法

Sharepoint有一个丑陋的怪癖,它可以将Guid指定为控件的id.我看到了由Sharepoint试图将这些Guids用作变量名称生成的JavaScript.这不是很好 – 它会打破脚本 – JavaScript变量名称中不允许使用破折号.我怀疑这是你遇到的问题.而且,我猜这个罪魁祸首是.CreateFieldRenderingControl().看起来该方法正在生成Id …是Id?如果是这样,请尝试用安全的方式覆盖Id,也许只需从Guid中删除破折号.
fieldRenderingControl.ID.Replace("-","");

如果这不是确切的解决方案,希望可以让您指出正确的方向.

猜你在找的C#相关文章