我有从WebControl
类继承的自定义类,我实际上是以编程方式构建带有Web服务器控件的表单。我的目标是能够向此表单添加验证控件,最终将其呈现为string
,我将在其中返回到Web服务调用者。
(注意:调用此网络服务的网页是Cold Fusion页面.cfm
,而不是典型的.aspx
或.ascx
页面
验证控件可以与您放置的任何控件一起使用 ASP.NET网页,包括HTML和Web服务器控件。
首先,甚至可以通过.Net的验证Web服务器控件以这种方式实现验证,因为我在Microsoft的文档中没有看到任何指示?
如果是这样,简单地渲染验证控件是不够的,因为它不会返回任何ViewState
数据,也不会返回在表单帖子上处理客户端验证的客户端脚本。也许这就是ScriptManager
会发挥作用的地方?
我已经包含了我的代码,用于呈现以编程方式构建表单以进行说明。
StringWriter stringWriter = new StringWriter();
HtmlTextWriter writer = new HtmlTextWriter(stringWriter);
// Build <form> using my custom FormBuilder class
FormBuilder form = new FormBuilder() { Method="POST", ID="frmTest" };
// Add TextBox web server control
TextBox txtCertificate = new TextBox() { ID = "txtCertificate" };
// Add validator and associate to TextBox
RequiredFieldValidator rfvCertificate = new RequiredFieldValidator() { ControlToValidate = txtCertificate.ID, ErrorMessage = "Certificate required." };
// Add submit button
Button btnSubmit = new Button() { ID = "btnSubmit", Text = "Submit" };
// Bind the server controls to the form control
form.Controls.Add(txtCertificate);
form.Controls.Add(rfvCertificate);
form.Controls.Add(btnSubmit);
// Finally, return the rendered string
form.RenderControl(writer);
return writer.InnerWriter.ToString();