C# 自定义标签、文本框和RequiredFieldValidator呈现时的Web控件问题
我创建了一个自定义web控件,它结合了标签、文本框和RequiredFieldValidator。为此,我创建了一个继承表控件的类字段C# 自定义标签、文本框和RequiredFieldValidator呈现时的Web控件问题,c#,asp.net,C#,Asp.net,我创建了一个自定义web控件,它结合了标签、文本框和RequiredFieldValidator。为此,我创建了一个继承表控件的类字段 namespace WebHRIS.Controls { public class Field : Table { private Label lblField; private TextBox tbField; private RequiredFieldValidator rfvField;
namespace WebHRIS.Controls
{
public class Field : Table
{
private Label lblField;
private TextBox tbField;
private RequiredFieldValidator rfvField;
private string _text;
private string _invalidMessage;
private string _clientScript;
private string _controlID;
public virtual string LabelText
{
get { return _text; }
set { _text = value; }
}
public virtual string InvalidMessage
{
get { return _invalidMessage; }
set { _invalidMessage = value; }
}
public virtual string ClientScript
{
get { return _clientScript; }
set { _clientScript = value; }
}
public virtual string ControlID
{
get { return _controlID; }
set { _controlID = value; }
}
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
TableRow tr = new TableRow();
TableCell tc = new TableCell();
lblField = new Label();
lblField.Text = _text;
tc.Controls.Add(lblField);
tr.Cells.Add(tc);
tbField = new TextBox();
tbField.ID = _controlID + this.ID;
tc = new TableCell();
tc.Controls.Add(tbField);
tr.Cells.Add(tc);
rfvField = new RequiredFieldValidator();
rfvField.ControlToValidate = tbField.ID;
rfvField.ErrorMessage = this.InvalidMessage;
rfvField.EnableClientScript = (this.ClientScript.ToLower() != "false");
tc = new TableCell();
tc.Controls.Add(rfvField);
tr.Cells.Add(tc);
this.Rows.Add(tr);
}
protected override void Render(HtmlTextWriter writer)
{
base.Render(writer);
lblField.RenderControl(writer);
}
}
}
我就是这样使用这个控件的
<%@ Register TagPrefix="udc" Namespace="WebHRIS.Controls" Assembly="WebHRIS" %>
<udc:Field ID="fSample" runat="server" LabelText="Sample : " InvalidMessage="ErrorMessage"
ClientScript="false" ControlID="tb" />
请注意,这只是部分代码。现在,我遇到了这样的问题
我想删除“示例:”文本。T.I.A乍一看,我认为您在渲染方法中获得了第二行文本:
protected override void Render(HtmlTextWriter writer)
{
base.Render(writer);
lblField.RenderControl(writer);
}
lblField是标签控件-我敢打赌,通过调用
lblField.RenderControl(writer)
,标签将被第二次写入。尝试删除该行,看看控件是否能正确渲染。谢谢。。。你是一个救生员