我对 ASP.NET 的最大不满之一是,除了过多的前缀 ID 之外,它使得组织页面的控件变得很困难。过去我已经竭尽全力试图缓解这种情况,但我想要一个更容易实施的解决方案。所以,我想知道:
是否可以在 .aspx 的代码隐藏中定义用户控件,然后在 .aspx 中使用它?我在想可能不是......我无法让它工作。
我对 ASP.NET 的最大不满之一是,除了过多的前缀 ID 之外,它使得组织页面的控件变得很困难。过去我已经竭尽全力试图缓解这种情况,但我想要一个更容易实施的解决方案。所以,我想知道:
是否可以在 .aspx 的代码隐藏中定义用户控件,然后在 .aspx 中使用它?我在想可能不是......我无法让它工作。
不可以。您必须在其自己的 .ascx 文件中创建用户控件。
虽然如果您希望创建一个 Web 控件,您可以在所需的任何 .cs/.vb 文件中定义它。尽管为了您的同事能够找到您的代码,我还是建议您将其保存在自己的文件中。
注意:我会质疑“除了过多的前缀 ID 之外,很难组织页面的控件”的有效性。这就是模板化控件(中继器、数据列表等)的用途。它们将实现INamingContainer
,从而使您能够命名具有相同名称但范围不同的控件。这里有一些很好的信息...
必须定义一个现有的 ASP.NET 用户控件,并且您可以动态加载它。这与您拥有的用户控件的动态功能差不多。您还可以利用自定义控件,这确实使您可以完全控制呈现的 UI。但是,不呈现完整的 ID 可能会导致客户端/服务器集成出现后续问题,具体取决于您尝试执行的操作。
此外,要自定义 ID,您可以利用 ASP.NET 4.0 的 ClientIDMode 属性:http: //msdn.microsoft.com/en-us/library/system.web.ui.control.clientidmode.aspx