将必需的字段验证程序添加到SharePoint Webpart

时间:2009-03-24 13:50:39

标签: asp.net sharepoint moss sharepoint-2007 web-parts

我正在为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()覆盖中。 当我打开此webpart页面时,我在SharePoint中收到一般错误消息。 我无法通过调试来捕获错误。

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

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

4 个答案:

答案 0 :(得分:3)

我能够解决问题。

我们应该使用

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

而不是

vldProjectError.ControlToValidate = txtProjectName.ClientID;

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

答案 1 :(得分:2)

我会尝试两件事:

  1. 启用错误输出在开发SharePoint时非常有用,请按this post启用它。
  2. 尝试在Render方法中分配ControlToValidate属性,而不是在CreateChildControls中。或者至少在将txtProjectName添加到控件集合后执行此操作。

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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

this.Controls.Add(txtProjectName);

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