【发布时间】:2013-05-08 20:31:01
【问题描述】:
最初的问题是如何制作最可维护的代码,因为我需要一个在大多数 WebForms 中非常相似但不相同的菜单栏。
乍一看,我以为我想在自定义用户控件中制作一个占位符,该控件放置在母版页中,然后访问占位符,将独特的内容放入 WebForm 中,一切都很愉快且可维护。在阅读了表格并通过反复试验后,我意识到我尝试过的每个解决方案都存在一些问题:
- 将占位符控件放在用户控件中会使占位符及其每个内容难以在 Web 表单中访问(依赖于 FindControl("ID") 的嵌套实例),事件很难冒泡(我假设我当在引用它的代码中创建控件时必须执行此操作)或绑定(尽管引用:http://msdn.microsoft.com/en-us/library/t4z863dh(vs.71).aspx),但如果我想移动/重命名控件,代码很难维护。
- 嵌套控件会产生同样的问题,因为我想使用一个控件 - 在许多页面上进行小的修改。如果我嵌套,那么我仍然必须具有彼此的交叉控制知识,这在 ASP.NET 中是困难的。无论如何,如果我嵌套了用户控件,那么我还需要每个 WebForm 一个唯一的用户控件吗?
- 将代码复制并粘贴到每个 WebForm 很简单,但也很重复且容易出错。
- 显然,我什至不应该尝试继承用户控件来创建独特的孩子:How (if at all) can you make an ASP.NET UserControl inherit from another UserControl?。
我是 ASP.NET 的新手。在这种情况下,我应该使用一些通用策略来制作良好的可维护代码吗?
【问题讨论】:
-
您是否尝试过将内部控件公开为其容器的属性?这样更容易访问它们,无需通过 ID 获取。此外,继承与框架中的任何其他类一样。
-
为什么不使用站点地图样式的解决方案?将您的菜单放入您将解析的 XML 文件中(只需在每一页中引用正确的菜单)。您甚至可以为常用菜单项创建一个“主”XML 文件(用于合并,例如与 XSLT)。
标签: asp.net vb.net coding-style