3

我正在为 MOSS 2007 编写一个 webpart。我需要验证该 webpart 中的一个文本字段,或者我正在使用必填字段验证器。

我正在创建必填字段验证器,如下所示:

vldProjectError = new RequiredFieldValidator();
vldProjectError.ForeColor = Color.Red;
vldProjectError.ErrorMessage = Resources.LABEL_PROJECT_ERROR;
vldProjectError.ControlToValidate = txtProjectName.ClientID;
vldProjectError.Display = ValidatorDisplay.Dynamic;
this.Controls.Add(vldProjectError);

上面的代码片段在 CreateChildControls() 覆盖中。当我打开此 Web 部件页面时,我在 SharePoint 中收到一般错误消息。我无法通过调试来捕获错误。

我注意到异常是在 CreateChildControls() 之后和 Render() 方法之前抛出的,因为调试器从不进入 Render() 方法

知道如何在 sharepoint webparts 中使用验证器吗?有什么我想念的吗?

4

4 回答 4

3

我能够解决这个问题。

我们应该使用

txtProjectName.ID = "txtProjectName";    
vldProjectError.ControlToValidate = txtProjectName.ID;

代替

vldProjectError.ControlToValidate = txtProjectName.ClientID;

这应该在 CreateChidControls() 方法中完成。

于 2009-04-02T13:32:01.713 回答
2

我会尝试两件事:

  1. 在为 SharePoint 开发时,启用错误输出绝对有帮助,请按照这篇文章启用它。
  2. 尝试在 Render 方法中分配 ControlToValidate 属性,而不是在 CreateChildControls 中。或者至少在将 txtProjectName 添加到控件集合之后执行此操作。
于 2009-03-24T16:16:27.227 回答
0

您是否尝试在 web.config 中向浏览器启用错误输出?也许这会给你一个更详细的信息。

于 2009-03-24T13:54:07.130 回答
0

在验证器控件方面,我遇到了与您相同的问题。已验证控件的controlId属性为 null,直到您将其添加到 Web 部件的控件集合中。因此,必须在此行之后配置验证器:

this.Controls.Add(txtProjectName);

检查此调试您的 Web 部件并查看已验证控件的 ClientId 属性。

于 2009-03-31T07:41:38.827 回答