创建一个自定义控件继承,例如,文字。这个控件将是一个助手。
你将把它插入一个页面,让它为你做所有的脏活。例如,基于一些逻辑的输出代码[这将花费大量时间编写],一旦你完成它。
获取该自动代码(如果每次由另一个控件实际完成,这将是沉重的负担),删除辅助控件并将新代码硬编码放置在您想要的任何位置。
通过这种方式,您可以通过让计算机根据需要找出您想要的代码来避免所有错误,并且您可以获得所有硬编码的速度,而这会因使用通用方法解决问题而受到影响。
我只是在寻找同样的东西,它突然打动了我。我将此方法用于其他事情[扫描所有控件并输出一些初始化代码],但我想您也可以使用此方法轻松地做到这一点!
刚刚写了,分享给大家
public class ValidationCodeProducerHelper : Literal
{
// you can set this in the aspx/ascx as a control property
public string MyValidationGroup { get; set; }
// get last minute controls
protected override void OnPreRender(EventArgs e)
{
base.OnPreRender(e);
// start scanning from page subcontrols
ControlCollection _collection = Page.Controls;
Text = GetCode(_collection).Replace("\r\n", "<br/>");
}
private string GetCode(Control _control)
{
// building helper
StringBuilder _output = new StringBuilder();
// the logic of scanning
if (_control.GetType().GetProperty("ValidationGroup") != null && !string.IsNullOrEmpty(_control.ID))
{
// the desired code
_output.AppendFormat("{0}.{1} = {2};", _control.ID, "ValidationGroup", MyValidationGroup);
_output.AppendLine();
}
// recursive search within children
_output.Append(GetCode(_control.Controls));
// outputting
return _output.ToString();
}
private string GetCode(ControlCollection _collection)
{
// building helper
StringBuilder _output = new StringBuilder();
foreach (Control _control in _collection)
{
// get code for each child
_output.Append(GetCode(_control));
}
// outputting
return _output.ToString();
}
}