C# 如何从codebehind添加输入和验证控件
我在CMS中工作,称为RiSE内置iMIS(我不推荐) 我正在构建一个插件类型的东西,它将允许程序后端的管理员构建一个联系人表单。(非常简单对吧!?!?) 所以,我不知道要处理的表单输入是什么,或者有多少 该过程适用于每个添加的输入C# 如何从codebehind添加输入和验证控件,c#,asp.net,validation,contact-form,C#,Asp.net,Validation,Contact Form,我在CMS中工作,称为RiSE内置iMIS(我不推荐) 我正在构建一个插件类型的东西,它将允许程序后端的管理员构建一个联系人表单。(非常简单对吧!?!?) 所以,我不知道要处理的表单输入是什么,或者有多少 该过程适用于每个添加的输入 将其“id”添加到提交表单时使用的列表中 根据管理员选择的选项生成输入并添加属性 添加验证器 下面的代码是将输入添加到页面的代码。想法很简单,管理员“创建”输入并选择它们的选项(名称、标签、占位符、只读等) 然后,codebehind将采用这些选项并构建输入和协同绑
<%@ Control Language="C#" AutoEventWireup="True" CodeBehind="EmailFormTextBoxDisplay.ascx.cs" Inherits="EmailForm.EmailFormTextBoxDisplay" %>
<%@ Register TagPrefix="telerik" Namespace="Telerik.Web.UI" Assembly="Telerik.Web.UI" %>
<%@ Register TagPrefix="asiweb" Assembly="Asi.Web" Namespace="Asi.Web.UI.WebControls" %>
<div onprerender="buildMe" runat="server"></div>
我尝试将验证部分分解为它自己的方法,调用第一部分(输入)onLoad
,然后添加验证器onPreRender
,但我得到了相同的错误
我还尝试使用Control.AddAt(2,输入)
来确保
在验证器之前,但没有效果
如何动态构建输入和验证?ControlToValidate需要要验证的控件的服务器端id。您需要如下设置控件的id:
input.ID = "MY_ID";
然后使用输入id验证:
required.ControlToValidate = input.ID;
您需要使用aspnet生成的
ID
,而不是属性设置的引用。这是因为该ID将由aspnet客户端重命名,因此html中的实际ID可能类似于以下内容
HtmlInputGenericControl input = new HtmlInputGenericControl("input");
input.ID = id;
然后是验证器
required.ControlToValidate = input.ID;
您还可以使用“真正的”aspnet控件
TextBox tb = new TextBox();
tb.ID = "myTextBox" + i;
RequiredFieldValidator val = new RequiredFieldValidator();
val.ControlToValidate = tb.ID;
val.ErrorMessage = "Required field";
Literal lit = new Literal();
lit.Text = "<br>";
PlaceHolder1.Controls.Add(tb);
PlaceHolder1.Controls.Add(val);
PlaceHolder1.Controls.Add(lit);
TextBox=newtextbox();
tb.ID=“myTextBox”+i;
RequiredFieldValidator val=新的RequiredFieldValidator();
val.ControlToValidate=tb.ID;
val.ErrorMessage=“必填字段”;
Literal lit=新的Literal();
lit.Text=“
”;
占位符1.控件。添加(tb);
占位符1.控件.添加(val);
占位符1.控件.添加(亮起);
+1表示“真实”aspnet控件。ASP已经够糟糕了,上面没有垃圾。这是我的问题。我没有意识到“属性”的设置几乎是任意的。看不见的id到底有什么用???这很有效,谢谢你的例子。
TextBox tb = new TextBox();
tb.ID = "myTextBox" + i;
RequiredFieldValidator val = new RequiredFieldValidator();
val.ControlToValidate = tb.ID;
val.ErrorMessage = "Required field";
Literal lit = new Literal();
lit.Text = "<br>";
PlaceHolder1.Controls.Add(tb);
PlaceHolder1.Controls.Add(val);
PlaceHolder1.Controls.Add(lit);