【问题标题】:Dynamically creating many instances of ASP.NET usercontrols: How do I create it, and where will my conflicts be?动态创建许多 ASP.NET 用户控件实例:如何创建它,我的冲突在哪里?
【发布时间】:2010-08-12 22:18:40
【问题描述】:

我之前没有在 ASP.NET 中看到过这样的实现,但我正在考虑一个外观和行为如下所示的 UI:

概念概述

  • 加载了一个 TabControl,第一个选项卡包含一个网格
  • 双击行时,会创建一个包含记录详细信息的新选项卡
  • 选项卡/记录详细信息的内容由用户控件创建
  • 可以创建许多选项卡,因此将创建许多用户控件实例

我知道 ASP.NET 将为我重命名我的 (runat="server") ID,并且我可以使用 jQuery 或 ASP.NET 服务器端代码来处理 ID...我担心的是:

  • 如何让 ASP.NET 为我的用户控件的每个第 N 个实例生成一个唯一 ID(在占位符中呈现)
  • 如何实际创建该控件的额外实例?
  • 我还需要记住什么?

由于我不想要回发,我正在考虑基于 ComponentArt 的Callback Control 实现我的实现,并使用 ASP.net 用户控件来实现此效果。这将允许我做大多数需要回发的事情,但不会刷新页面上的所有元素......只是包含用户控件的部分。话虽如此,我并不依赖于特定的实现。

【问题讨论】:

  • 顺便说一句,如果您使用 .NET 4.0,您可以将 ClientIdMode 设置为 Static,因此控件将具有与标记中相同的 ID。见MSDN
  • 我几乎没有触及 .NET 4 的表面...感谢您的提示!另外,我将从现在开始修复我的 ASP.NET 外壳;)

标签: asp.net user-controls tabcontrol multiple-instances placeholder


【解决方案1】:

您应该查看 Page.LoadControl 方法。它工作得很好,据我记得你在页面上放置了占位符并将控件加载到 PlaceHolders 中,这就是你控制 id 的方式。

使用这种方法效果不佳的一件事是,当您的控件引发 Page 对象必须处理的事件时。如果您的控件是独立的,那么您应该没有问题。

这可能会帮助您入门: http://www.codeproject.com/KB/aspnet/LoadingUSerControl.aspx

【讨论】:

    猜你喜欢
    • 2023-04-04
    • 2017-07-22
    • 1970-01-01
    • 2012-12-15
    • 1970-01-01
    • 2022-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多