gpt4 book ai didi

c# - Page_ClientValidate() 对象预期错误,无法找到验证器

转载 作者:可可西里 更新时间:2023-11-01 02:46:56 26 4
gpt4 key购买 nike

我有一个 HomePage.aspx 表单,其中包含一个空的 asp:Panel,一个让用户选择 SPFielType 的下拉列表...在索引更改时,我的 HomePage.aspx.cs 页面将选择文本并加载用户控件在面板内,此用户控件将根据用户选择的 spfieldtype 和一个调用 validateForm() 函数的按钮生成一个控件...我的问题是 validateForm() 中的 Page_ClientValidate() 函数找不到验证器,我也试过给一个组名,但仍然没有用。
当我将按钮放入我的 aspx 页面(不是动态呈现)时,它正在验证我的页面。(<asp:Button ID="submitbutton" Text="Validate" 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 生成的 JavaScript 试图将这些 Guid 用作变量名。这不好 - 它会破坏脚本 - JavaScript 变量名称中不允许使用破折号。我怀疑这是您遇到的问题。而且,我猜罪魁祸首是 this.CreateFieldRenderingControl()。看起来那个方法正在生成一个 Id ...那个 Id 是一个 Guid 吗?如果是这样,尝试用安全的东西覆盖 Id,也许只是从 Guid 中删除破折号。

fieldRenderingControl.ID.Replace("-", "");

如果这不是确切的解决方案,希望它足以让您指明正确的方向。

关于c# - Page_ClientValidate() 对象预期错误,无法找到验证器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5486620/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com