【发布时间】:2010-11-09 17:29:36
【问题描述】:
我正在使用第 3 方系统在网站中实现某些表单。
第 3 方系统为我提供了这些表单的 XML 定义。 例如
<form>
<segment>
<label>The header</label>
<fields>
...
<field>
<id>field_Dob</id>
<type>Date</type>
<label>Date of Birth</label>
<required>1</required>
</field>
...
</fields>
</segment>
...
</form>
我在服务器控件中解析此 XML 并以编程方式生成控件树。控件的标签在 XML 中传递。
在此表单中“注入”小帮助文本是我们建议的一部分。
理想情况下,我想从顶级控件的标记中传递这些帮助文本,以便非开发人员(HTML 僧侣)可以更改帮助文本,并通过其 ID 将它们与字段相关联。像这样的
<controls:MyCrazyForm runat="server">
<helpTexts>
<helpText for="field_Dob">
Some rambling nonsense to do with the DOB field
</helpText>
...
</helpTexts>
</controls:MyCrazyForm>
这些控件被递归解析。
表单为每个段创建一个字段集,字段集根据数据类型创建许多 FieldXXX(其中 XXX = 日期、文本、组合框等)。
FieldXXX 类型创建一个 div,然后创建几个标准的 .net 控件(TextBox、DropDownList 等)来实际呈现它们自己。此时,我需要在包含的 div 中输出帮助文本。
我的问题
将这些文本从顶级表单控件获取到控件树中更深 3 或 4 级的子控件的“最佳”方法是什么。
页面上只会有这些表单之一。 我应该将顶级表单设为 Singleton 并像这样得到它吗?
if(MyCrazyForm.Instance.HelpTexts.ContainsKey("theIdOfTheCurrentField"))
{
this.HelpText = MyCrazyForm.Instance.HelpTexts["theIdOfTheCurrentField"];
}
我是否应该将表单的引用传递到树下的每个控件(这看起来很乱)?
我的 架构 是否已经达到目标(尽管目前它工作得很好)形式,我应该看看不同的实现方法吗?
谢谢
【问题讨论】:
标签: c# asp.net .net-3.5 servercontrols