问题标签 [dynamic-usercontrols]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 如何将控件移动到页面中动态添加的用户控件中?
我有一个在 CreateChildControls 方法上动态移动一些 web 控件的用户控件。当将此控件用于以下页面时:
它完美无缺。
但是,如果我想将该 userControl 动态添加到如下页面中:
。CS
它在我的 CreateChildControls 中崩溃并出现错误:在 DataBind、Init、Load、PreRender 或 Unload 阶段无法修改控件集合。
确切的做法是当我将 webControls 添加到我的 UserControl 内的占位符时:
所以我不明白为什么在这种情况下,当我动态添加我的 UserControl 时,我无法在 CreateChildControls 事件中移动 Web 控件。
asp.net - Asp.Net UserControls 是否可以知道它们是否被“延迟”添加到控件层次结构中?
我有一个用户控件,它使用标准if(!IsPostBack){//initialize myself}
范例来避免在回发期间重新进行初始化(因此,为了增加 ViewState 的使用,交易更少的 DB 命中)。这种方法在大多数情况下都很适合我,但有一个地方我想在回发期间将此控件添加到控件层次结构“后期”。
当然,这会导致初始化逻辑失败,并使控件呈现为未初始化状态。
我应该使用什么保护来确定我是否应该初始化,因为!IsPostBack
不是切割它?我可以在 期间设置一个标志LoadViewState
,但这似乎有点骇人听闻。我想找到一些仅在控件首次添加到控件层次结构时才会发生的条件,并以此为关键。存在这样的条件吗?
[编辑] 包含页面的示例伪代码如下:
有没有办法some_control
知道它被添加晚了?
asp.net - 使用 jquery ajax 动态加载用户控件
我已经阅读了几篇关于这个问题的文章,从技术上讲,他们最终所做的只是从用户控件中获取 html 代码并将其注入到包含页面中。我希望将真正的用户控件加载到页面上,以便在回发时,我仍然可以访问该加载的用户控件,并且可以在服务器端验证其上的字段等。我的意思是说一旦使用 ajax 将用户控件加载到页面上,它就应该像最初在页面首次加载时作为页面生命周期的一部分创建一样。那有意义吗?关于如何做到这一点的任何想法?UpdatePanel 可能是一个解决方案,但我宁愿不使用它。
asp.net - 如何动态访问用户控件属性?
我试图创建一个“用户控件菜单”,其中指向页面用户控件的链接放置在页面顶部。这将允许我在一个页面上放置几个用户控件,并允许用户跳转到页面的该部分而无需滚动太多。为了做到这一点,我将每个用户控件放在一个文件夹 (usercontrols) 中,并给每个控件一个描述属性 ( <%@ Control Language="C#" Description = "Vehicles" .... %>
)。
我的问题是如何动态访问此描述?我想将此描述用作菜单中的链接。到目前为止,我的页面上有一个 foreach,它在 ControlCollection 中查找 ASP.usercontrols 类型的控件。如果是,我会假设我可以访问它的属性并获取该描述属性。我怎样才能做到这一点?(我也愿意以更好的方式来实现我的“用户控制菜单”,但也许那是另一个问题。)我应该使用((System.Web.UI.UserControl)mydynamiccontrol).Attributes.Keys
吗?
c# - 如何从控制台应用程序或 Windows 服务加载 .ascx 用户控件?
我们使用 ascx 用户控件作为文档(例如发票)的模板。现在我需要从 Windows 服务加载、渲染为 HTML,然后将这些控件转换为 PDF。
那么,正确的方法/解决方法是什么?TemplateControl.LoadControl(path) 不起作用。
c# - 为回发存储动态插入控件的数量
我需要创建以下功能,并寻找在多个回发中存储信息的最佳方式:
假设我有一个文本框,它与一个问题有关,即“我去过的地方”。一旦 TextBox 将在第一次加载时加载。在此之下,有一个“添加另一个地方”的按钮。这将回发,然后将在第一个文本框下方添加另一个文本框。这可以做 x 次。
我的问题是,考虑到此加载需要在 Init 事件中完成,并且此时未加载 ViewState,我如何存储/记住用户已添加到页面的控件数量?
编辑*:
我忘了说,当用户保存时,会有一些验证,所以如果验证失败,需要显示所有的文本框,以及他们发布的数据。
c# - 使用 C# 从服务器端加载具有用户控件的多个内容占位符
如何使用 C# 从服务器端使用用户控件加载多个内容占位符。
目前从服务器端(在 page_load 中)我正在加载一个用户控件,如下所示:
我需要在我的页面中加载 8 个用户控件。我怎样才能达到同样的效果?提前致谢..
c# - 将参数发送到动态加载的用户控件
我使用 jQuery 将一些用户控件的内容加载到我的页面中。所以我有这个从我的用户控件中提取内容的功能,它就像一个魅力。
但是我真的很想在创建它时将一些参数发送到我的用户控件中。这可能吗,我该怎么做?
我可以看到LoadControl()
可以使用一些参数,object[] parameters
但我真的不确定如何使用它,非常感谢!
asp.net - 如何在 asp.net 的 userControl 中使用 OutputCache
我有一个 aspx 页面,其中包含这段代码来加载从数据库加载的用户控件
并且 ascx 有一个输出缓存
当我浏览页面时出现此错误
[NullReferenceException:对象引用未设置为对象的实例。] c:\Documents and Settings\Administrator\My Documents\Visual Studio 2005\Projects\AnaweenNews.root\AnaweenNews\ 中的 Content_SectionNews.Page_Load(Object sender, EventArgs e) anaween website\Content\SectionNews.aspx.cs:127 System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +14 System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +35 System.Web.UI.Control.OnLoad(EventArgs e) +99 System.Web.UI.Control.LoadRecursive() +50 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +627
版本信息:Microsoft .NET Framework 版本:2.0.50727.3615;ASP.NET 版本:2.0.50727.3618
c# - 如何在给定类型的情况下加载用户控件
如果你有它的类型(即),有没有办法实例化和使用用户控件(.ascx typeof(MyUserControl)
)?
使用像文本框或下拉列表这样的常规 asp.net 控件,您可以创建一个新实例并将其添加到控件集合中。这似乎不适用于用户控件。虽然您可以创建一个新实例并将其添加到集合中,并触发其所有事件,但它实际上不会呈现到页面。通常,您会Page.LoadControl()
使用 .ascx 的路径调用
如果您所拥有的只是它的类型,这就会出现问题。如何获得 .ascx 的路径以提供给该LoadControl
方法。理想情况下,我也希望不必引用 Page 对象