![]() |
1
1
它一开始可能更复杂,但更容易维护,为什么不通过XSL处理器运行XML文件呢?XSLT文件会将helptexts文件的helptext节点分配给相应的字段节点。
XSLT文件:
得出这样的结论:
现在可以像以前一样分析这个XML文件,但是现在可以在生成表单元素的同时获得帮助文本。您的HTML蒙奇只需要编辑XSLT文件,或者您只需要包含另一个文件:
您可以在网上试用XSL here |
![]() |
2
1
正如这里的其他答案所提出的那样,我认为一种不同的方法可能是有价值的,这取决于您案例的具体情况。与您所描述的类似的问题——将一些特定的文本与表单上的某些控件关联起来——已经为更一般的国际化案例(即资源)解决了。我知道这与其他答案不同,而不是直接问你问题中的问题,但资源似乎很好地满足了需求,如下所述。我不是回答你关于控制之间信息流的具体问题,而是考虑你试图达到的最终结果。如果我误解了什么,就对我宽容一点。
|
![]() |
3
0
向上遍历控件的父级,直到找到特定类型的控件,或者使用名为“helptexts”的特定成员变量,怎么样? 这是一种动态编程方法,但是对于某些基础设施设计元素,只要这些方法是有限的,并且对为什么采用这种设计方法进行了评论,我会发现它是可以接受的。 这将使用反射API和通用的静态助手函数,例如
然后,这将检查controlParent以查看它是否包含成员变量helptexts,然后按id查找helptext。否则,它将使用controlParent的父级递归调用getHelpTextFromParent,直到出现合适的终止条件为止。(我提到了“合适的终止条件”,因为在您到达桌面窗口之前保持这个状态可能是次优的,您可能希望在那之前终止递归,但这将是一个测试/调试问题。) |
![]() |
4
0
如果你是 在服务器控件中分析此XML并通过编程生成控件树 你如何确保HTML人员保持这些ID的同步?如果他们可以访问这些XML,也许您应该让他们在那里而不是在ASPX上添加帮助文本。 但为了回答您的问题,我想您是在读取和构建ASPX标记之后分析XML,这样您就可以在分析XML之前索引这些文本。然后,当您实际构建动态控制树时,您将根据源XML中定义的控制的ID查找索引,并在此时将其连接起来。 编辑:好的,根据您如何构建这些子控件,我将在内部公开表单的所有内联帮助文本,作为由控件ID索引的属性,该属性将提供帮助文本或空字符串。我不确定我知道 mycrazyform.instance 不过。 |
![]() |
5
0
我建议创建这样的接口
然后,表单控件可以实现此接口,并在创建字段集和fieldxxx控件时传递对此接口的引用。 或者,您可以按照polyglot建议的方式执行,当需要帮助文本时,fieldxxx控件将递归地遍历其父控件,直到找到实现iHelptextProvider接口的父控件为止。 |
![]() |
6
0
您可以在服务器控件中创建一个事件,每当需要/需要给定字段的帮助文本时,都会引发该事件。表单可以挂接一个事件处理程序并响应它。这样,您就不需要传递某个对象来授予服务器控件对信息的访问权。为此,我们需要做三件事。 创建EventArgs类:
在服务器控件中创建事件:
…并以可以访问帮助文本的形式设置事件处理程序:
使用这种方法,即使宿主表单不提供帮助文本服务,代码也可以正常工作;服务器控件并不取决于是否附加了事件处理程序。 |
![]() |
7
0
正如Ozam建议的那样,您可以使用XSL。 与第三方XML文件结构类似的单独的XML文件(每个XML节点包含helptext)很好&您可能需要合并(?)在某种程度上。 我不知道这是否有任何帮助。 |
![]() |
A B · C#Excel自动调整列避免长文本时出错 4 月前 |
![]() |
Megrez7 · C#ToArray转换合并为一行,导致数组元素更改 4 月前 |
![]() |
Aycon · 在工厂方法中释放部分创建的对象的正确方法是什么? 4 月前 |
|
Sei · Avalonia/WPF将路由器传递到控制模板 4 月前 |